From f486a9c93d1a84cb98bde4079bd881aa7fd10597 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 3 Apr 2025 13:43:46 +0200 Subject: [PATCH] s4:smb_server: make use of smb_transports_parse() in smbsrv_add_socket() Here we will only support tcp and nbt..., but that will simplify the global transition from 'smb ports' to 'server smb transports'. Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- source4/smb_server/smb_server.c | 34 +++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/source4/smb_server/smb_server.c b/source4/smb_server/smb_server.c index c45df702c3f..f6118bafd51 100644 --- a/source4/smb_server/smb_server.c +++ b/source4/smb_server/smb_server.c @@ -181,19 +181,45 @@ _PUBLIC_ NTSTATUS smbsrv_add_socket(TALLOC_CTX *mem_ctx, const char *address, void *process_context) { - const char **ports = lpcfg_smb_ports(lp_ctx); + struct smb_transports ts = + smb_transports_parse("smb ports", + lpcfg_smb_ports(lp_ctx)); + bool found_valid = false; int i; NTSTATUS status; - for (i=0;ports[i];i++) { - uint16_t port = atoi(ports[i]); - if (port == 0) continue; + for (i=0; i < ts.num_transports;i++) { + const struct smb_transport *t = &ts.transports[i]; + uint16_t port = 0; + + switch (t->type) { + case SMB_TRANSPORT_TYPE_NBT: + case SMB_TRANSPORT_TYPE_TCP: + port = t->port; + break; + case SMB_TRANSPORT_TYPE_UNKNOWN: + break; + } + + if (port == 0) { + /* + * Ignore unsupported transports + */ + continue; + } + status = stream_setup_socket(mem_ctx, event_context, lp_ctx, model_ops, &smb_stream_ops, "ip", address, &port, lpcfg_socket_options(lp_ctx), NULL, process_context); NT_STATUS_NOT_OK_RETURN(status); + + found_valid = true; + } + + if (!found_valid) { + return NT_STATUS_NO_IP_ADDRESSES; } return NT_STATUS_OK; -- 2.47.3