summaryrefslogtreecommitdiff
path: root/source4/smb_server
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-09-06 11:34:35 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-02-28 12:01:08 +0100
commit63c96b3a58accffba21981563b8b53c33f8b8f37 (patch)
treeeb5688a287b6b7b3258cd3ba8b3698791ecec6c4 /source4/smb_server
parent0c4d1d6b19891f7a6446e7d265800c686f78e32a (diff)
downloadsamba-63c96b3a58accffba21981563b8b53c33f8b8f37.tar.gz
samba-63c96b3a58accffba21981563b8b53c33f8b8f37.tar.bz2
samba-63c96b3a58accffba21981563b8b53c33f8b8f37.zip
s4-smb_server Remove inetd-mode samba3 hook
Diffstat (limited to 'source4/smb_server')
-rw-r--r--source4/smb_server/smb_samba3.c181
-rw-r--r--source4/smb_server/wscript_build10
2 files changed, 0 insertions, 191 deletions
diff --git a/source4/smb_server/smb_samba3.c b/source4/smb_server/smb_samba3.c
deleted file mode 100644
index 1a99be644a..0000000000
--- a/source4/smb_server/smb_samba3.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- process incoming connections and fork a samba3 in inetd mode
-
- Copyright (C) Stefan Metzmacher 2008
-
- 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.h"
-#include "libcli/smb2/smb2.h"
-#include "system/network.h"
-#include "lib/socket/netif.h"
-#include "param/param.h"
-#include "dynconfig/dynconfig.h"
-#include "smbd/process_model.h"
-
-NTSTATUS server_service_samba3_smb_init(void);
-
-/*
- initialise a server_context from a open socket and register a event handler
- for reading from that socket
-*/
-static void samba3_smb_accept(struct stream_connection *conn)
-{
- int i;
- int fd = socket_get_fd(conn->socket);
- const char *prog;
- char *argv[2];
- char *reason;
-
- close(0);
- close(1);
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
- for (i=3;i<256;i++) {
- close(i);
- }
-
- prog = lpcfg_parm_string(conn->lp_ctx, NULL, "samba3", "smbd");
-
- if (prog == NULL) {
- argv[0] = talloc_asprintf(conn, "%s/%s", dyn_BINDIR, "smbd3");
- }
- else {
- argv[0] = talloc_strdup(conn, prog);
- }
-
- if (argv[0] == NULL) {
- stream_terminate_connection(conn, "out of memory");
- return;
- }
- argv[1] = NULL;
-
- execv(argv[0], argv);
-
- /*
- * Should never get here
- */
- reason = talloc_asprintf(conn, "Could not execute %s", argv[0]);
- if (reason == NULL) {
- stream_terminate_connection(conn, "out of memory");
- return;
- }
- stream_terminate_connection(conn, reason);
- talloc_free(reason);
-}
-
-static const struct stream_server_ops samba3_smb_stream_ops = {
- .name = "samba3",
- .accept_connection = samba3_smb_accept,
-};
-
-/*
- setup a listening socket on all the SMB ports for a particular address
-*/
-static NTSTATUS samba3_add_socket(struct task_server *task,
- struct tevent_context *event_context,
- struct loadparm_context *lp_ctx,
- const struct model_ops *model_ops,
- const char *address)
-{
- const char **ports = lpcfg_smb_ports(lp_ctx);
- int i;
- NTSTATUS status;
-
- for (i=0;ports[i];i++) {
- uint16_t port = atoi(ports[i]);
- if (port == 0) continue;
- status = stream_setup_socket(task, event_context, lp_ctx,
- model_ops, &samba3_smb_stream_ops,
- "ip", address, &port,
- lpcfg_socket_options(lp_ctx),
- NULL);
- NT_STATUS_NOT_OK_RETURN(status);
- }
-
- return NT_STATUS_OK;
-}
-
-
-/*
- open the smb server sockets
-*/
-static void samba3_smb_task_init(struct task_server *task)
-{
- NTSTATUS status;
- const struct model_ops *model_ops;
-
- model_ops = process_model_startup("standard");
-
- if (model_ops == NULL) {
- goto failed;
- }
-
- task_server_set_title(task, "task[samba3_smb]");
-
- if (lpcfg_interfaces(task->lp_ctx)
- && lpcfg_bind_interfaces_only(task->lp_ctx)) {
- int num_interfaces;
- int i;
- struct interface *ifaces;
-
- load_interface_list(task, task->lp_ctx, &ifaces);
-
- num_interfaces = iface_list_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_list_n_ip(ifaces, i);
- status = samba3_add_socket(task,
- task->event_ctx,
- task->lp_ctx,
- model_ops, address);
- if (!NT_STATUS_IS_OK(status)) goto failed;
- }
- } else {
- const char **wcard;
- int i;
- wcard = iface_list_wildcard(task, task->lp_ctx);
- if (wcard == NULL) {
- DEBUG(0,("No wildcard addresses available\n"));
- goto failed;
- }
- for (i=0; wcard[i]; i++) {
- status = samba3_add_socket(task,
- task->event_ctx, task->lp_ctx,
- model_ops,
- wcard[i]);
- if (!NT_STATUS_IS_OK(status)) goto failed;
- }
- talloc_free(wcard);
- }
-
- return;
-failed:
- task_server_terminate(task, "Failed to startup samba3 smb task", true);
-}
-
-/* called at smbd startup - register ourselves as a server service */
-NTSTATUS server_service_samba3_smb_init(void)
-{
- return register_server_service("samba3_smb", samba3_smb_task_init);
-}
diff --git a/source4/smb_server/wscript_build b/source4/smb_server/wscript_build
index 86223886bd..5bf004a76f 100644
--- a/source4/smb_server/wscript_build
+++ b/source4/smb_server/wscript_build
@@ -9,16 +9,6 @@ bld.SAMBA_MODULE('service_smb',
internal_module=False,
)
-
-bld.SAMBA_MODULE('service_samba3_smb',
- source='smb_samba3.c',
- subsystem='service',
- init_function='server_service_samba3_smb_init',
- deps='talloc',
- internal_module=False,
- )
-
-
bld.SAMBA_SUBSYSTEM('SMB_SERVER',
source='handle.c tcon.c session.c blob.c management.c smb_server.c',
autoproto='smb_server_proto.h',