From f83e6ded9d31f819dba5e59e15c703d292716206 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 8 Apr 2005 05:34:13 +0000 Subject: r6245: receive and parse the GETDC response in the NBT-DGRAM test. The test now tries to bind to port 138 if possible, so if you run it as root and smbd/nmbd is not running then it works against windows servers (This used to be commit 52ccdb79bc922be52c24dd393323dbbee83a2aea) --- source4/torture/nbt/dgram.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'source4/torture/nbt/dgram.c') diff --git a/source4/torture/nbt/dgram.c b/source4/torture/nbt/dgram.c index c87940a94d..b87e7e0b0f 100644 --- a/source4/torture/nbt/dgram.c +++ b/source4/torture/nbt/dgram.c @@ -36,9 +36,22 @@ static void netlogon_handler(struct dgram_mailslot_handler *dgmslot, struct nbt_dgram_packet *packet, const char *src_address, int src_port) { + NTSTATUS status; + struct nbt_netlogon_packet netlogon; + printf("netlogon reply from %s:%d\n", src_address, src_port); + + status = dgram_mailslot_netlogon_parse(dgmslot, dgmslot, packet, &netlogon); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed to parse netlogon packet from %s:%d\n", + src_address, src_port); + return; + } + + NDR_PRINT_DEBUG(nbt_netlogon_packet, &netlogon); } + /* test UDP/138 netlogon requests */ static BOOL nbt_test_netlogon(TALLOC_CTX *mem_ctx, struct nbt_name name, const char *address) @@ -52,7 +65,14 @@ static BOOL nbt_test_netlogon(TALLOC_CTX *mem_ctx, int timelimit = lp_parm_int(-1, "torture", "timelimit", 10); struct timeval tv = timeval_current(); - socket_listen(dgmsock->sock, myaddress, 0, 0, 0); + /* try receiving replies on port 138 first, which will only + work if we are root and smbd/nmbd are not running - fall + back to listening on any port, which means replies from + some windows versions won't be seen */ + status = socket_listen(dgmsock->sock, myaddress, lp_dgram_port(), 0, 0); + if (!NT_STATUS_IS_OK(status)) { + socket_listen(dgmsock->sock, myaddress, 0, 0, 0); + } /* setup a temporary mailslot listener for replies */ dgmslot = dgram_mailslot_temp(dgmsock, "\\MAILSLOT\\NET\\GETDC", -- cgit