[SCM] Samba Shared Repository - branch master updated

Ralph Böhme slow at samba.org
Tue Jul 7 20:36:06 CEST 2015


The branch, master has been updated
       via  0afea2c WHATSNEW: Spotlight
       via  e0edda7 s3-mdssvc: add documentation for mdssvc and mdssd
       via  480cc51 s3-mdssvc: add mdssd RPC service daemon for mdssvc
       via  4b0ee5d s3-mdssvc: lexer and parser for Spotlight queries
       via  c2c5621 s3-mdssvc: main Spotlight code
       via  0de03ce s3-mdssvc: Spotlight attribute mappings
       via  5d4ecea s3-mdssvc: (un)marshalling Spotlight RPC blob
       via  222e863 s3-mdssvc: dalloc: dynamic object store based on talloc
       via  25f56f5 s3-mdssvc: add new option 'spotlight'
       via  63dd793 s3-mdssvc: add Spotlight RPC stubs
       via  5c6e2b2 mdssvc: IDL file for new RPC service
       via  6e332ab s3-mdssvc: add configure option --enable-spotlight
      from  66736fe s4:torture/rpc: use dcerpc_secondary_auth_connection with creds

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0afea2c364234a28f0b18e97fa08a2c7fe2ae4ae
Author: Ralph Boehme <slow at samba.org>
Date:   Fri Mar 27 17:39:43 2015 +0100

    WHATSNEW: Spotlight
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Ralph Böhme <slow at samba.org>
    Autobuild-Date(master): Tue Jul  7 20:35:07 CEST 2015 on sn-devel-104

commit e0edda73115e8671da11cdb18bd88b6461a02210
Author: Ralph Boehme <rb at sernet.de>
Date:   Mon Aug 11 22:30:53 2014 +0200

    s3-mdssvc: add documentation for mdssvc and mdssd
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 480cc511ff350fd6c6952e8fa991571784b3aa23
Author: Ralph Boehme <rb at sernet.de>
Date:   Mon Aug 11 22:29:09 2014 +0200

    s3-mdssvc: add mdssd RPC service daemon for mdssvc
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 4b0ee5d209778694d7ee8514bfa9d38f07e39901
Author: Ralph Boehme <rb at sernet.de>
Date:   Thu Jul 31 18:01:34 2014 +0200

    s3-mdssvc: lexer and parser for Spotlight queries
    
    Add a lexer and parser for translating Spotlight query strings to
    SPARQL.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit c2c5621380ce59e034bddc12e7dc4feebc7daa9f
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Mar 26 22:39:21 2015 +0100

    s3-mdssvc: main Spotlight code
    
    Implement all Spotlight RPC commands with the Tracker SPARQL async query
    API.
    
    Tracker uses glib for implemeting async tasks, we thus have to use a
    glib mainloop for processing sheduled tasks in threads.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 0de03ce4a451ac6887a84b4f9786b1b5bd12cbbb
Author: Ralph Boehme <rb at sernet.de>
Date:   Thu Jul 31 17:56:44 2014 +0200

    s3-mdssvc: Spotlight attribute mappings
    
    Add mappings for metadata attribute between Spotlight and NEPOMUK for
    use with Tracker.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 5d4eceae1579de341e69a090a3983e323591ce8e
Author: Ralph Boehme <rb at sernet.de>
Date:   Thu Jul 31 17:07:28 2014 +0200

    s3-mdssvc: (un)marshalling Spotlight RPC blob
    
    Add code for marshalling and unmarshalling Spotlight RPC blobs
    from/into a dalloc object store.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 222e863d4e31f0a30c83eef39e5b4d8475f066d1
Author: Ralph Boehme <rb at sernet.de>
Date:   Thu Jul 31 16:27:36 2014 +0200

    s3-mdssvc: dalloc: dynamic object store based on talloc
    
    dalloc is a hack with a bizarre API, but it does its job: it's a
    simple object store that allows for storing simple and complex data
    types.
    
    We'll use it for storing Spotlight query data.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 25f56f5f4060c912f4fb6a9ef7179829233369bd
Author: Ralph Boehme <rb at sernet.de>
Date:   Thu Jul 31 13:49:49 2014 +0200

    s3-mdssvc: add new option 'spotlight'
    
    Per share option: it reflects whether a share is indexed by Tracker or
    not. The global switch that controls whether Spotlight is enabled or
    not, are the mdsvc RPC switches.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 63dd793cde70a3d3a5bf4144c316b764d687546b
Author: Ralph Boehme <rb at sernet.de>
Date:   Wed Jul 23 09:58:45 2014 +0200

    s3-mdssvc: add Spotlight RPC stubs
    
    'mdssvc' aka 'Metadata Search Service' is an RPC service used by Apple
    for passing marshalled Spotlight search queries and results between
    client to server.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 5c6e2b2b1fc4514f5f61dd16b6fdc59410edc815
Author: Ralph Boehme <rb at sernet.de>
Date:   Wed Jul 23 09:58:45 2014 +0200

    mdssvc: IDL file for new RPC service
    
    'mdssvc' aka 'Metadata Search Service' is an RPC service used by Apple
    for passing marshalled Spotlight search queries and results between
    client to server.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 6e332abc3c8411bf43010741f9f6c55c7e5bae6f
Author: Ralph Boehme <rb at sernet.de>
Date:   Wed Jul 23 07:15:50 2014 +0200

    s3-mdssvc: add configure option --enable-spotlight
    
    configure check with pkg-config for libtracker-sparql, default is
    disabled.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 WHATSNEW.txt                                       |    8 +
 docs-xml/smbdotconf/misc/rpcdaemon.xml             |    7 +-
 docs-xml/smbdotconf/misc/rpcserver.xml             |    8 +-
 docs-xml/smbdotconf/misc/spotlight.xml             |   56 +
 lib/param/param_table.c                            |    8 +
 librpc/idl/mdssvc.idl                              |   68 +
 librpc/idl/wscript_build                           |    3 +-
 librpc/wscript_build                               |   12 +-
 source3/param/loadparm.c                           |    1 +
 source3/rpc_server/{lsasd.c => mdssd.c}            |  535 ++---
 source3/rpc_server/mdssvc/Makefile                 |   16 +
 source3/rpc_server/mdssvc/README                   |   14 +
 source3/rpc_server/mdssvc/dalloc.c                 |  230 +++
 source3/rpc_server/mdssvc/dalloc.h                 |  163 ++
 source3/rpc_server/mdssvc/marshalling.c            | 1362 +++++++++++++
 source3/rpc_server/mdssvc/marshalling.h            |   55 +
 source3/rpc_server/mdssvc/mdssvc.c                 | 2083 ++++++++++++++++++++
 source3/rpc_server/mdssvc/mdssvc.h                 |  125 ++
 .../rpc_server/mdssvc/sparql_lexer.c               |  415 ++--
 source3/rpc_server/mdssvc/sparql_lexer.l           |   57 +
 source3/rpc_server/mdssvc/sparql_mapping.c         |  373 ++++
 source3/rpc_server/mdssvc/sparql_mapping.h         |   58 +
 source3/rpc_server/mdssvc/sparql_parser.c          | 1973 ++++++++++++++++++
 source3/rpc_server/mdssvc/sparql_parser.h          |   98 +
 source3/rpc_server/mdssvc/sparql_parser.y          |  479 +++++
 source3/rpc_server/mdssvc/sparql_parser_test.c     |   38 +
 source3/rpc_server/mdssvc/srv_mdssvc_nt.c          |  213 ++
 .../mdssvc/srv_mdssvc_nt.h}                        |   16 +-
 source3/rpc_server/rpc_config.c                    |    1 +
 source3/rpc_server/rpc_config.h                    |    2 +
 source3/rpc_server/rpc_service_setup.c             |   59 +
 source3/rpc_server/wscript_build                   |   18 +
 source3/smbd/server.c                              |   10 +
 source3/wscript                                    |   20 +-
 source3/wscript_build                              |   12 +-
 35 files changed, 7989 insertions(+), 607 deletions(-)
 create mode 100644 docs-xml/smbdotconf/misc/spotlight.xml
 create mode 100644 librpc/idl/mdssvc.idl
 copy source3/rpc_server/{lsasd.c => mdssd.c} (50%)
 create mode 100644 source3/rpc_server/mdssvc/Makefile
 create mode 100644 source3/rpc_server/mdssvc/README
 create mode 100644 source3/rpc_server/mdssvc/dalloc.c
 create mode 100644 source3/rpc_server/mdssvc/dalloc.h
 create mode 100644 source3/rpc_server/mdssvc/marshalling.c
 create mode 100644 source3/rpc_server/mdssvc/marshalling.h
 create mode 100644 source3/rpc_server/mdssvc/mdssvc.c
 create mode 100644 source3/rpc_server/mdssvc/mdssvc.h
 copy source4/heimdal/lib/com_err/lex.c => source3/rpc_server/mdssvc/sparql_lexer.c (82%)
 create mode 100644 source3/rpc_server/mdssvc/sparql_lexer.l
 create mode 100644 source3/rpc_server/mdssvc/sparql_mapping.c
 create mode 100644 source3/rpc_server/mdssvc/sparql_mapping.h
 create mode 100644 source3/rpc_server/mdssvc/sparql_parser.c
 create mode 100644 source3/rpc_server/mdssvc/sparql_parser.h
 create mode 100644 source3/rpc_server/mdssvc/sparql_parser.y
 create mode 100644 source3/rpc_server/mdssvc/sparql_parser_test.c
 create mode 100644 source3/rpc_server/mdssvc/srv_mdssvc_nt.c
 copy source3/{lib/util_cluster.h => rpc_server/mdssvc/srv_mdssvc_nt.h} (71%)


Changeset truncated at 500 lines:

diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index ac2e40d..cbf73b9 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -22,6 +22,14 @@ backends for logging to the systemd-journal, lttng and gpfs have been
 added. Please consult the section for the 'logging' parameter in the
 smb.conf manpage for details.
 
+Spotlight
+=========
+
+Support for Apple's Spotlight has been added by integrating with Gnome
+Tracker.
+
+For detailed instructions how to build and setup Samba for Spotlight,
+please see the Samba wiki: <https://wiki.samba.org/index.php/Spotlight>
 
 ######################################################################
 Changes
diff --git a/docs-xml/smbdotconf/misc/rpcdaemon.xml b/docs-xml/smbdotconf/misc/rpcdaemon.xml
index e9654a0..72f057d 100644
--- a/docs-xml/smbdotconf/misc/rpcdaemon.xml
+++ b/docs-xml/smbdotconf/misc/rpcdaemon.xml
@@ -55,14 +55,15 @@
 	</para>
 
 	<para>
-	Samba includes separate daemons for spoolss, lsarpc/lsass, netlogon,
-	samr, and FSRVP. Currently four daemons are available and they are
-	called:
+	Samba includes separate daemons for spoolss, lsarpc/lsass,
+	netlogon, samr, FSRVP and mdssvc(Spotlight). Currently five
+	daemons are available and they are called:
 	<programlisting>
 		epmd
 		lsasd
 		spoolssd
 		fssd
+		mdssd
 	</programlisting>
 	Example:
 	<programlisting>
diff --git a/docs-xml/smbdotconf/misc/rpcserver.xml b/docs-xml/smbdotconf/misc/rpcserver.xml
index d285872..fafedaf 100644
--- a/docs-xml/smbdotconf/misc/rpcserver.xml
+++ b/docs-xml/smbdotconf/misc/rpcserver.xml
@@ -32,6 +32,7 @@
 		<listitem><para>ntsvcs       - Plug and Play Services</para></listitem>
 		<listitem><para>eventlog     - Event Logger</para></listitem>
 		<listitem><para>initshutdown - Init Shutdown Service</para></listitem>
+		<listitem><para>mdssvc       - Spotlight</para></listitem>
 	</itemizedlist>
 
 	<para>
@@ -55,8 +56,8 @@
 	</para>
 
 	<para>
-		Currently in Samba3 we support three daemons, spoolssd, epmd and
-		lsasd. These daemons can be enabled using the
+		Currently in Samba3 we support four daemons, spoolssd, epmd,
+		lsasd and mdssd. These daemons can be enabled using the
 		<emphasis>rpc_daemon</emphasis> option. For spoolssd you have
 		to enable the daemon and proxy the named pipe with:
 	</para>
@@ -71,6 +72,9 @@
 
 			rpc_server:spoolss = external
 			rpc_server:epmapper = disabled
+
+			rpc_daemon:mdssd = fork
+			rpc_server:mdssvc = external
 		</programlisting>
 	</para>
 
diff --git a/docs-xml/smbdotconf/misc/spotlight.xml b/docs-xml/smbdotconf/misc/spotlight.xml
new file mode 100644
index 0000000..fa2001d
--- /dev/null
+++ b/docs-xml/smbdotconf/misc/spotlight.xml
@@ -0,0 +1,56 @@
+<samba:parameter name="spotlight"
+		 context="S"
+		 type="boolean"
+		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>
+	  This parameter controls whether Samba allows Spotlight
+	  queries on a share. For controlling indexing of filesystems
+	  you also have to use Tracker's own configuration system.
+	</para>
+
+	<para>
+	  Spotlight has several prerequisites:
+	</para>
+
+	<itemizedlist>
+	  <listitem><para>
+	    Samba must be configured and built with Spotlight support.
+	  </para></listitem>
+
+	  <listitem><para>
+	    The <emphasis>mdssvc</emphasis> RPC service must be
+	    enabled, see below.
+	  </para></listitem>
+
+	  <listitem><para> Tracker intergration must be setup and the
+	  share must be indexed by Tracker.</para></listitem>
+	</itemizedlist>
+
+	<para>For a detailed set of instructions please see <ulink
+	url="https://wiki.samba.org/index.php/Spotlight">https://wiki.samba.org/index.php/Spotlight</ulink>.
+	</para>
+
+	<para>
+	  The Spotlight RPC service can either be enabled as embedded
+	  RPC service:
+	</para>
+
+<programlisting>
+<smbconfsection name="[Global]"/>
+<smbconfoption name="rpc_server:mdsvc">embedded</smbconfoption>
+</programlisting>
+
+	<para>
+	  Or it can be run in a seperate RPC service daemon:
+	</para>
+
+<programlisting>
+<smbconfsection name="[Global]"/>
+<smbconfoption name="rpc_server:mdssd">fork</smbconfoption>
+<smbconfoption name="rpc_server:mdsvc">external</smbconfoption>
+</programlisting>
+
+</description>
+<value type="default">no</value>
+</samba:parameter>
diff --git a/lib/param/param_table.c b/lib/param/param_table.c
index ff31038..148f79c 100644
--- a/lib/param/param_table.c
+++ b/lib/param/param_table.c
@@ -808,6 +808,14 @@ struct parm_struct parm_table[] = {
 		.enum_list	= NULL,
 	},
 	{
+		.label		= "spotlight",
+		.type		= P_BOOL,
+		.p_class	= P_LOCAL,
+		.offset		= LOCAL_VAR(spotlight),
+		.special	= NULL,
+		.enum_list	= NULL,
+	},
+	{
 		.label		= "write ok",
 		.type		= P_BOOLREV,
 		.p_class	= P_LOCAL,
diff --git a/librpc/idl/mdssvc.idl b/librpc/idl/mdssvc.idl
new file mode 100644
index 0000000..bfb27c4
--- /dev/null
+++ b/librpc/idl/mdssvc.idl
@@ -0,0 +1,68 @@
+import "misc.idl";
+[
+	uuid("885d85fb-c754-4062-a0e7-6872ce0064f4"),
+	endpoint("ncacn_np:[\\pipe\\mdssvc]", "ncalrpc:"),
+	version(2.0),
+	helpstring("Spotlight metadata search service")
+]
+interface mdssvc
+{
+	void mdssvc_open(
+		[in,out,ref]                             uint32         *device_id,
+		[in,out,ref]                             uint32         *unkn2, /* always 0x17 ? */
+		[in,out,ref]                             uint32         *unkn3, /* always 0 ? */
+		[in][string,charset(UTF8),size_is(1025)] uint8           share_mount_path[],
+		[in][string,charset(UTF8),size_is(1025)] uint8           share_name[],
+		[out,string,charset(UTF8),size_is(1025)] uint8           share_path[],
+		[out,ref]                                policy_handle  *handle
+	);
+
+	void mdssvc_unknown1(
+		[in]        policy_handle   handle,
+		[in]        uint32          unkn1, /* always 0, some status ? */
+		[in]        uint32          device_id,
+		[in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
+		[in]        uint32          unkn4, /* always 0, some status ? */
+		[in]        uint32          uid,
+		[in]        uint32          gid,
+		[out,ref]   uint32         *status,
+		[out,ref]   uint32         *flags, /* always 0x6b000001 ? */
+		[out,ref]   uint32         *unkn7  /* always 0 ? */
+	);
+
+	typedef [public] struct {
+		uint32 length;
+		uint32 size;
+		[size_is(size),length_is(length)] uint8 *spotlight_blob;
+	} mdssvc_blob;
+
+	void mdssvc_cmd(
+		[in]        policy_handle   handle,
+		[in]        uint32          unkn1, /* always 0, status ? */
+		[in]        uint32          device_id,
+		[in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
+		[in]        uint32          unkn4, /* always 0 ? */
+		[in]        uint32          flags, /* always 0x6b000001 ? */
+		[in]        mdssvc_blob     request_blob,
+		[in]        uint32          unkn5, /* always 0 ? */
+		[in]        uint32          max_fragment_size1,
+		[in]        uint32          unkn6, /* always 1 ? */
+		/* always max_fragment_size1 = max_fragment_size2 ? */
+		[in]        uint32          max_fragment_size2,
+		[in]        uint32          unkn7, /* always 0 ? */
+		[in]        uint32          unkn8, /* always 0 ? */
+		[out,ref]   uint32         *status,
+		[out,ref]   mdssvc_blob    *response_blob,
+		[out,ref]   uint32         *unkn9  /* always 0 ? */
+	);
+
+	void mdssvc_close(
+		[in]        policy_handle   in_handle,
+		[in]        uint32          unkn1, /* always 0, some status ? */
+		[in]        uint32          device_id,
+		[in]        uint32          unkn2, /* = mdssvc_open.unkn2 ? */
+		[in]        uint32          unkn3, /* always 0, some status ? */
+		[out,ref]   policy_handle  *out_handle,
+		[out,ref]   uint32         *status
+	);
+}
diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build
index 4b56af6..6316edd 100644
--- a/librpc/idl/wscript_build
+++ b/librpc/idl/wscript_build
@@ -13,7 +13,8 @@ bld.SAMBA_PIDL_LIST('PIDL',
                        notify.idl
                        smb2_lease_struct.idl
                        policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
-                       fsrvp.idl bkupblobs.idl fscc.idl frsblobs.idl witness.idl clusapi.idl''',
+                       fsrvp.idl bkupblobs.idl fscc.idl frsblobs.idl witness.idl clusapi.idl
+                       mdssvc.idl''',
                     options='--header --ndr-parser --samba3-ndr-server --server --client --python',
                     output_dir='../gen_ndr')
 
diff --git a/librpc/wscript_build b/librpc/wscript_build
index 212733a..1594e72 100644
--- a/librpc/wscript_build
+++ b/librpc/wscript_build
@@ -330,6 +330,11 @@ bld.SAMBA_SUBSYSTEM('NDR_CLUSAPI',
     public_deps='ndr'
     )
 
+bld.SAMBA_SUBSYSTEM('NDR_MDSSVC',
+    source='gen_ndr/ndr_mdssvc.c',
+    public_deps='ndr'
+    )
+
 bld.SAMBA_SUBSYSTEM('NDR_DCERPC',
     source='gen_ndr/ndr_dcerpc.c ndr/ndr_dcerpc.c',
     public_deps='ndr',
@@ -665,12 +670,17 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_CLUSAPI',
     public_deps='dcerpc-binding NDR_CLUSAPI'
     )
 
+bld.SAMBA_SUBSYSTEM('RPC_NDR_MDSSVC',
+    source='gen_ndr/ndr_mdssvc_c.c',
+    public_deps='dcerpc-binding NDR_MDSSVC'
+    )
+
 # a grouping library for NDR subsystems that may be used by more than one target
 bld.SAMBA_LIBRARY('ndr-samba',
     source=[],
     deps='''NDR_DRSBLOBS NDR_DRSUAPI NDR_IDMAP NDR_NTLMSSP NDR_SCHANNEL NDR_MGMT
     NDR_DNSP NDR_EPMAPPER NDR_XATTR NDR_UNIXINFO NDR_NAMED_PIPE_AUTH NDR_DCOM
-    NDR_NTPRINTING NDR_FSRVP NDR_WITNESS NDR_OPEN_FILES NDR_SMBXSRV''',
+    NDR_NTPRINTING NDR_FSRVP NDR_WITNESS NDR_MDSSVC NDR_OPEN_FILES NDR_SMBXSRV''',
     private_library=True,
     grouping_library=True
     )
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index cedaf1a..af74d68 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -185,6 +185,7 @@ static struct loadparm_service sDefault =
 	.access_based_share_enum = false,
 	.bAvailable = true,
 	.read_only = true,
+	.spotlight = false,
 	.guest_only = false,
 	.administrative_share = false,
 	.guest_ok = false,
diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/mdssd.c
similarity index 50%
copy from source3/rpc_server/lsasd.c
copy to source3/rpc_server/mdssd.c
index 6fd0817..fac386b 100644
--- a/source3/rpc_server/lsasd.c
+++ b/source3/rpc_server/mdssd.c
@@ -1,9 +1,9 @@
 /*
  *  Unix SMB/CIFS implementation.
  *
- *  LSA service daemon
+ *  mds service daemon
  *
- *  Copyright (c) 2011      Andreas Schneider <asn at samba.org>
+ *  Copyright (c) 2014      Ralph Boehme <rb at sernet.de>
  *
  *  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
@@ -37,78 +37,37 @@
 #include "rpc_server/rpc_ep_register.h"
 #include "rpc_server/rpc_sock_helper.h"
 
-#include "librpc/gen_ndr/srv_lsa.h"
-#include "librpc/gen_ndr/srv_samr.h"
-#include "librpc/gen_ndr/srv_netlogon.h"
+#include "librpc/gen_ndr/srv_mdssvc.h"
+#include "rpc_server/mdssvc/srv_mdssvc_nt.h"
 
-#define DAEMON_NAME "lsasd"
-#define LSASD_MAX_SOCKETS 64
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+#define DAEMON_NAME "mdssd"
+#define MDSSD_MAX_SOCKETS 64
 
 static struct server_id parent_id;
-static struct prefork_pool *lsasd_pool = NULL;
-static int lsasd_child_id = 0;
+static struct prefork_pool *mdssd_pool = NULL;
+static int mdssd_child_id = 0;
 
-static struct pf_daemon_config default_pf_lsasd_cfg = {
+static struct pf_daemon_config default_pf_mdssd_cfg = {
 	.prefork_status = PFH_INIT,
 	.min_children = 5,
 	.max_children = 25,
 	.spawn_rate = 5,
-	.max_allowed_clients = 100,
+	.max_allowed_clients = 1000,
 	.child_min_life = 60 /* 1 minute minimum life time */
 };
-static struct pf_daemon_config pf_lsasd_cfg = { 0 };
+static struct pf_daemon_config pf_mdssd_cfg = { 0 };
 
-void start_lsasd(struct tevent_context *ev_ctx,
+void start_mdssd(struct tevent_context *ev_ctx,
 		 struct messaging_context *msg_ctx);
 
-static void lsasd_reopen_logs(int child_id)
-{
-	char *lfile = lp_logfile(talloc_tos());
-	char *extension;
-	int rc;
-
-	if (child_id) {
-		rc = asprintf(&extension, "%s.%d", DAEMON_NAME, child_id);
-	} else {
-		rc = asprintf(&extension, "%s", DAEMON_NAME);
-	}
-	if (rc == -1) {
-		return;
-	}
-
-	rc = 0;
-	if (lfile == NULL || lfile[0] == '\0') {
-		rc = asprintf(&lfile, "%s/log.%s",
-			      get_dyn_LOGFILEBASE(), extension);
-	} else {
-		if (strstr(lfile, extension) == NULL) {
-			if (child_id) {
-				rc = asprintf(&lfile, "%s.%d",
-						lp_logfile(talloc_tos()),
-						child_id);
-			} else {
-				rc = asprintf(&lfile, "%s.%s",
-						lp_logfile(talloc_tos()),
-						extension);
-			}
-		}
-	}
-
-	if (rc > 0) {
-		lp_set_logfile(lfile);
-		SAFE_FREE(lfile);
-	}
-
-	SAFE_FREE(extension);
-
-	reopen_logs();
-}
-
-static void lsasd_smb_conf_updated(struct messaging_context *msg,
-				  void *private_data,
-				  uint32_t msg_type,
-				  struct server_id server_id,
-				  DATA_BLOB *data)
+static void mdssd_smb_conf_updated(struct messaging_context *msg,
+				   void *private_data,
+				   uint32_t msg_type,
+				   struct server_id server_id,
+				   DATA_BLOB *data)
 {
 	struct tevent_context *ev_ctx;
 
@@ -118,38 +77,36 @@ static void lsasd_smb_conf_updated(struct messaging_context *msg,
 	change_to_root_user();
 	lp_load_global(get_dyn_CONFIGFILE());
 
-	lsasd_reopen_logs(lsasd_child_id);
-	if (lsasd_child_id == 0) {
+	reopen_logs();
+	if (mdssd_child_id == 0) {
 		pfh_daemon_config(DAEMON_NAME,
-				  &pf_lsasd_cfg,
-				  &default_pf_lsasd_cfg);
-		pfh_manage_pool(ev_ctx, msg, &pf_lsasd_cfg, lsasd_pool);
+				  &pf_mdssd_cfg,
+				  &default_pf_mdssd_cfg);
+		pfh_manage_pool(ev_ctx, msg, &pf_mdssd_cfg, mdssd_pool);
 	}
 }
 
-static void lsasd_sig_term_handler(struct tevent_context *ev,
-				  struct tevent_signal *se,
-				  int signum,
-				  int count,
-				  void *siginfo,
-				  void *private_data)
+static void mdssd_sig_term_handler(struct tevent_context *ev,
+				   struct tevent_signal *se,
+				   int signum,
+				   int count,
+				   void *siginfo,
+				   void *private_data)
 {
-	rpc_netlogon_shutdown();
-	rpc_samr_shutdown();
-	rpc_lsarpc_shutdown();
+	rpc_mdssvc_shutdown();
 
 	DEBUG(0, ("termination signal\n"));
 	exit(0);
 }
 
-static void lsasd_setup_sig_term_handler(struct tevent_context *ev_ctx)
+static void mdssd_setup_sig_term_handler(struct tevent_context *ev_ctx)
 {
 	struct tevent_signal *se;
 
 	se = tevent_add_signal(ev_ctx,
 			       ev_ctx,
 			       SIGTERM, 0,
-			       lsasd_sig_term_handler,
+			       mdssd_sig_term_handler,
 			       NULL);
 	if (!se) {
 		DEBUG(0, ("failed to setup SIGTERM handler\n"));
@@ -157,34 +114,34 @@ static void lsasd_setup_sig_term_handler(struct tevent_context *ev_ctx)
 	}
 }
 
-static void lsasd_sig_hup_handler(struct tevent_context *ev,
-				    struct tevent_signal *se,
-				    int signum,
-				    int count,
-				    void *siginfo,
-				    void *pvt)
+static void mdssd_sig_hup_handler(struct tevent_context *ev,
+				  struct tevent_signal *se,
+				  int signum,
+				  int count,
+				  void *siginfo,
+				  void *pvt)
 {
 
 	change_to_root_user();
 	lp_load_global(get_dyn_CONFIGFILE());
 
-	lsasd_reopen_logs(lsasd_child_id);
+	reopen_logs();
 	pfh_daemon_config(DAEMON_NAME,
-			  &pf_lsasd_cfg,
-			  &default_pf_lsasd_cfg);
+			  &pf_mdssd_cfg,
+			  &default_pf_mdssd_cfg);
 
 	/* relay to all children */
-	prefork_send_signal_to_all(lsasd_pool, SIGHUP);
+	prefork_send_signal_to_all(mdssd_pool, SIGHUP);
 }
 
-static void lsasd_setup_sig_hup_handler(struct tevent_context *ev_ctx)
+static void mdssd_setup_sig_hup_handler(struct tevent_context *ev_ctx)
 {
 	struct tevent_signal *se;
 
 	se = tevent_add_signal(ev_ctx,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list