smb_server: Split core out of service, since the service can be built as a .so agains...
authorJelmer Vernooij <jelmer@samba.org>
Sun, 10 Oct 2010 22:41:22 +0000 (00:41 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 10 Oct 2010 23:06:36 +0000 (01:06 +0200)
source4/smb_server/service_smb.c [new file with mode: 0644]
source4/smb_server/smb_server.c
source4/smb_server/wscript_build

diff --git a/source4/smb_server/service_smb.c b/source4/smb_server/service_smb.c
new file mode 100644 (file)
index 0000000..54feccb
--- /dev/null
@@ -0,0 +1,81 @@
+/* 
+   Unix SMB/CIFS implementation.
+   process incoming packets - main loop
+   Copyright (C) Andrew Tridgell       2004-2005
+   Copyright (C) Stefan Metzmacher     2004-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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "smbd/service_task.h"
+#include "smbd/service_stream.h"
+#include "smbd/service.h"
+#include "smb_server/smb_server.h"
+#include "smb_server/service_smb_proto.h"
+#include "lib/messaging/irpc.h"
+#include "lib/stream/packet.h"
+#include "libcli/smb2/smb2.h"
+#include "smb_server/smb2/smb2_server.h"
+#include "system/network.h"
+#include "lib/socket/netif.h"
+#include "param/share.h"
+#include "dsdb/samdb/samdb.h"
+#include "param/param.h"
+
+/*
+  open the smb server sockets
+*/
+static void smbsrv_task_init(struct task_server *task)
+{      
+       NTSTATUS status;
+
+       task_server_set_title(task, "task[smbsrv]");
+
+       if (lpcfg_interfaces(task->lp_ctx) && lpcfg_bind_interfaces_only(task->lp_ctx)) {
+               int num_interfaces;
+               int i;
+               struct interface *ifaces;
+
+               load_interfaces(task, lpcfg_interfaces(task->lp_ctx), &ifaces);
+
+               num_interfaces = iface_count(ifaces);
+
+               /* 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.
+               */
+               for(i = 0; i < num_interfaces; i++) {
+                       const char *address = iface_n_ip(ifaces, i);
+                       status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops, address);
+                       if (!NT_STATUS_IS_OK(status)) goto failed;
+               }
+       } else {
+               /* Just bind to lpcfg_socket_address() (usually 0.0.0.0) */
+               status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops,
+                                          lpcfg_socket_address(task->lp_ctx));
+               if (!NT_STATUS_IS_OK(status)) goto failed;
+       }
+
+       return;
+failed:
+       task_server_terminate(task, "Failed to startup smb server task", true); 
+}
+
+/* called at smbd startup - register ourselves as a server service */
+NTSTATUS server_service_smb_init(void)
+{
+       share_init();
+       return register_server_service("smb", smbsrv_task_init);
+}
index 6ebefc6ebae4c1ff5badf1602a7c78f06f7abf9c..8e54423706558bb27eaf10a68ae252f4ec214a55 100644 (file)
@@ -199,48 +199,4 @@ _PUBLIC_ NTSTATUS smbsrv_add_socket(struct tevent_context *event_context,
 }
 
 
-/*
-  open the smb server sockets
-*/
-static void smbsrv_task_init(struct task_server *task)
-{      
-       NTSTATUS status;
-
-       task_server_set_title(task, "task[smbsrv]");
-
-       if (lpcfg_interfaces(task->lp_ctx) && lpcfg_bind_interfaces_only(task->lp_ctx)) {
-               int num_interfaces;
-               int i;
-               struct interface *ifaces;
-
-               load_interfaces(task, lpcfg_interfaces(task->lp_ctx), &ifaces);
-
-               num_interfaces = iface_count(ifaces);
-
-               /* 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.
-               */
-               for(i = 0; i < num_interfaces; i++) {
-                       const char *address = iface_n_ip(ifaces, i);
-                       status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops, address);
-                       if (!NT_STATUS_IS_OK(status)) goto failed;
-               }
-       } else {
-               /* Just bind to lpcfg_socket_address() (usually 0.0.0.0) */
-               status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops,
-                                          lpcfg_socket_address(task->lp_ctx));
-               if (!NT_STATUS_IS_OK(status)) goto failed;
-       }
 
-       return;
-failed:
-       task_server_terminate(task, "Failed to startup smb server task", true); 
-}
-
-/* called at smbd startup - register ourselves as a server service */
-NTSTATUS server_service_smb_init(void)
-{
-       share_init();
-       return register_server_service("smb", smbsrv_task_init);
-}
index 8ea4b48b81d2642ddb51049664202696ebfbc42a..45e697b7affc693ce7ded3ddea4a26646f424f98 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 bld.SAMBA_MODULE('SERVICE_SMB',
-       source='smb_server.c',
+       source='service_smb.c',
        autoproto='service_smb_proto.h',
        subsystem='service',
        init_function='server_service_smb_init',
@@ -18,7 +18,7 @@ bld.SAMBA_MODULE('SERVICE_SAMBA3_SMB',
 
 
 bld.SAMBA_SUBSYSTEM('SMB_SERVER',
-       source='handle.c tcon.c session.c blob.c management.c',
+       source='handle.c tcon.c session.c blob.c management.c smb_server.c',
        autoproto='smb_server_proto.h',
        public_deps='share LIBPACKET SMB_PROTOCOL SMB2_PROTOCOL'
        )