]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:libsmb/unexpected: pass nmbd_socket_dir from the callers of nb_packet_{server_crea...
authorStefan Metzmacher <metze@samba.org>
Wed, 14 Feb 2024 10:38:19 +0000 (11:38 +0100)
committerJule Anger <janger@samba.org>
Wed, 3 Jul 2024 08:48:12 +0000 (08:48 +0000)
This will allow source4/nbt_server to make use of
nb_packet_server_create().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15620

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit 696505a1efbcc9803a287d8c267fed9d04bf8885)

source3/libsmb/clidgram.c
source3/libsmb/namequery.c
source3/libsmb/nmblib.c
source3/libsmb/nmblib.h
source3/libsmb/unexpected.c
source3/libsmb/unexpected.h
source3/nmbd/nmbd_packets.c

index ec0b1efa8ce171b9b93a28e31f1d92967e7ecb31..137b454acbba657f183cadd0da5fd738ffb10f55 100644 (file)
@@ -349,7 +349,11 @@ struct tevent_req *nbt_getdc_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
 
-       subreq = nb_packet_reader_send(state, ev, DGRAM_PACKET, -1,
+       subreq = nb_packet_reader_send(state,
+                                      ev,
+                                      global_nmbd_socket_dir(),
+                                      DGRAM_PACKET,
+                                      -1,
                                       state->my_mailslot);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
index 8ae4004a98c24ffc5145a657b3953fcb36a650e1..8f6a9b51f8161d5f6ffe8e411567ddd2e733812e 100644 (file)
@@ -645,7 +645,12 @@ static struct tevent_req *nb_trans_send(
                return tevent_req_post(req, ev);
        }
 
-       subreq = nb_packet_reader_send(state, ev, type, state->trn_id, NULL);
+       subreq = nb_packet_reader_send(state,
+                                      ev,
+                                      global_nmbd_socket_dir(),
+                                      type,
+                                      state->trn_id,
+                                      NULL);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
index ea4c5b7b35a9d7f5f5ba72f74015a4efaea96830..2297dd9ded948f9a2c6281fd939d8c4ff9f19e34 100644 (file)
 #include "libsmb/nmblib.h"
 #include "lib/util/string_wrappers.h"
 
+const char *global_nmbd_socket_dir(void)
+{
+       return lp_parm_const_string(-1, "nmbd", "socket dir",
+                                   get_dyn_NMBDSOCKETDIR());
+}
+
 static const struct opcode_names {
        const char *nmb_opcode_name;
        int opcode;
index 52600a41e575db853906ab6e7c684d6c519c2ac3..5171a26ec0f3c6d4d1849419d9100183ef81ab18 100644 (file)
@@ -29,6 +29,8 @@
 
 /* The following definitions come from libsmb/nmblib.c  */
 
+const char *global_nmbd_socket_dir(void);
+
 void debug_nmb_packet(struct packet_struct *p);
 void put_name(char *dest, const char *name, int pad, unsigned int name_type);
 char *nmb_namestr(const struct nmb_name *n);
index dbcbc04b2d684156cef35d509955227a767c939b..bbad054c3865bf1af5762070f2fcfc31fe4e4f10 100644 (file)
 #include "lib/tsocket/tsocket.h"
 #include "lib/util/sys_rw.h"
 
-static const char *nmbd_socket_dir(void)
-{
-       return lp_parm_const_string(-1, "nmbd", "socket dir",
-                                   get_dyn_NMBDSOCKETDIR());
-}
-
 struct nb_packet_query {
        enum packet_type type;
        size_t mailslot_namelen;
@@ -74,6 +68,7 @@ static void nb_packet_server_listener(struct tevent_context *ev,
 
 NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx,
                                 struct tevent_context *ev,
+                                const char *nmbd_socket_dir,
                                 int max_clients,
                                 struct nb_packet_server **presult)
 {
@@ -90,7 +85,7 @@ NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx,
        result->max_clients = max_clients;
 
        result->listen_sock = create_pipe_sock(
-               nmbd_socket_dir(), "unexpected", 0755);
+               nmbd_socket_dir, "unexpected", 0755);
        if (result->listen_sock == -1) {
                status = map_nt_error_from_unix(errno);
                goto fail;
@@ -495,6 +490,7 @@ static void nb_packet_reader_got_ack(struct tevent_req *subreq);
 
 struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
                                         struct tevent_context *ev,
+                                        const char *nmbd_socket_dir,
                                         enum packet_type type,
                                         int trn_id,
                                         const char *mailslot_name)
@@ -530,7 +526,7 @@ struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
                tevent_req_nterror(req, map_nt_error_from_unix(errno));
                return tevent_req_post(req, ev);
        }
-       rpath = talloc_asprintf(state, "%s/%s", nmbd_socket_dir(),
+       rpath = talloc_asprintf(state, "%s/%s", nmbd_socket_dir,
                               "unexpected");
        if (tevent_req_nomem(rpath, req)) {
                return tevent_req_post(req, ev);
index 270976b7f6505bf3425c9843b1921d311ce9ac32..4ae9b2090620e3daf09772bad2bf876dec2de866 100644 (file)
@@ -29,12 +29,14 @@ struct nb_packet_reader;
 
 NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx,
                                 struct tevent_context *ev,
+                                const char *nmbd_socket_dir,
                                 int max_clients,
                                 struct nb_packet_server **presult);
 void nb_packet_dispatch(struct nb_packet_server *server,
                        struct packet_struct *p);
 struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
                                         struct tevent_context *ev,
+                                        const char *nmbd_socket_dir,
                                         enum packet_type type,
                                         int trn_id,
                                         const char *mailslot_name);
index a1d8deec0f32cfc2447b4c5f9461001295ecc0c8..1da365762e651ace034cc5e2845491fa06805b1e 100644 (file)
@@ -43,6 +43,7 @@ bool nmbd_init_packet_server(void)
 
        status = nb_packet_server_create(
                NULL, nmbd_event_context(),
+               global_nmbd_socket_dir(),
                lp_parm_int(-1, "nmbd", "unexpected_clients", 200),
                &packet_server);
        if (!NT_STATUS_IS_OK(status)) {