*/
#include "includes.h"
-#include "lib/events/events.h"
-#include "dlinklist.h"
-#include "libcli/nbt/libnbt.h"
#include "libcli/dgram/libdgram.h"
-#include "lib/socket/socket.h"
-#include "librpc/gen_ndr/ndr_nbt.h"
/*
send a ntlogon mailslot request
*/
NTSTATUS dgram_mailslot_ntlogon_send(struct nbt_dgram_socket *dgmsock,
+ enum dgram_msg_type msg_type,
struct nbt_name *dest_name,
- const char *dest_address,
- int dest_port,
+ const struct nbt_peer_socket *dest,
struct nbt_name *src_name,
struct nbt_ntlogon_packet *request)
{
}
- status = dgram_mailslot_send(dgmsock, DGRAM_DIRECT_UNIQUE,
+ status = dgram_mailslot_send(dgmsock, msg_type,
NBT_MAILSLOT_NTLOGON,
- dest_name, dest_address, dest_port,
+ dest_name, dest,
src_name, &blob);
talloc_free(tmp_ctx);
return status;
DATA_BLOB blob;
TALLOC_CTX *tmp_ctx = talloc_new(dgmsock);
struct nbt_name myname;
+ struct nbt_peer_socket dest;
status = ndr_push_struct_blob(&blob, tmp_ctx, reply,
(ndr_push_flags_fn_t)ndr_push_nbt_ntlogon_packet);
return status;
}
- myname.name = lp_netbios_name();
- myname.type = NBT_NAME_CLIENT;
- myname.scope = NULL;
+ make_nbt_name_client(&myname, lp_netbios_name());
+ dest.port = request->src_port;
+ dest.addr = request->src_addr;
status = dgram_mailslot_send(dgmsock, DGRAM_DIRECT_UNIQUE,
mailslot_name,
&request->data.msg.source_name,
- request->source, request->src_port,
+ &dest,
&myname, &blob);
talloc_free(tmp_ctx);
return status;
struct nbt_dgram_packet *dgram,
struct nbt_ntlogon_packet *ntlogon)
{
- DATA_BLOB *data = &dgram->data.msg.body.smb.body.trans.data;
+ DATA_BLOB data = dgram_mailslot_data(dgram);
NTSTATUS status;
- status = ndr_pull_struct_blob(data, mem_ctx, ntlogon,
+ status = ndr_pull_struct_blob(&data, mem_ctx, ntlogon,
(ndr_pull_flags_fn_t)ndr_pull_nbt_ntlogon_packet);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0,("Failed to parse ntlogon packet of length %d\n",
- data->length));
-#if 0
- file_save("ntlogon.dat", data->data, data->length);
-#endif
+ (int)data.length));
+ if (DEBUGLVL(10)) {
+ file_save("ntlogon.dat", data.data, data.length);
+ }
}
return status;
}