1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-12 20:58:37 +03:00

libcli/nbt: add nbt_name_send_raw()

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 cca373b806e01fc57bd5316d3f8a17578b4b6531)
This commit is contained in:
Stefan Metzmacher 2024-02-15 17:47:13 +01:00 committed by Jule Anger
parent 12a6060eed
commit e2cec0d280
2 changed files with 47 additions and 0 deletions

View File

@ -331,6 +331,9 @@ NTSTATUS nbt_set_unexpected_handler(struct nbt_name_socket *nbtsock,
void (*handler)(struct nbt_name_socket *, struct nbt_name_packet *,
struct socket_address *),
void *private_data);
NTSTATUS nbt_name_send_raw(struct nbt_name_socket *nbtsock,
struct socket_address *dest,
const DATA_BLOB pkt_blob);
NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock,
struct socket_address *dest,
struct nbt_name_packet *request);

View File

@ -448,6 +448,50 @@ failed:
return NULL;
}
/*
send off a nbt name packet
*/
_PUBLIC_ NTSTATUS nbt_name_send_raw(struct nbt_name_socket *nbtsock,
struct socket_address *dest,
const DATA_BLOB pkt_blob)
{
struct nbt_name_request *req;
req = talloc_zero(nbtsock, struct nbt_name_request);
NT_STATUS_HAVE_NO_MEMORY(req);
req->nbtsock = nbtsock;
req->dest = socket_address_copy(req, dest);
if (req->dest == NULL) {
goto failed;
}
req->state = NBT_REQUEST_SEND;
/*
* We don't expect a response so
* just pretent it is a request,
* but we really don't care about the
* content.
*/
req->is_reply = true;
req->encoded = data_blob_dup_talloc(req, pkt_blob);
if (req->encoded.length != pkt_blob.length) {
goto failed;
}
talloc_set_destructor(req, nbt_name_request_destructor);
DLIST_ADD_END(nbtsock->send_queue, req);
TEVENT_FD_WRITEABLE(nbtsock->fde);
return NT_STATUS_OK;
failed:
talloc_free(req);
return NT_STATUS_NO_MEMORY;
}
/*
send off a nbt name reply