diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/libcli/nbt/libnbt.h | 1 | ||||
-rw-r--r-- | source4/libcli/nbt/namequery.c | 2 | ||||
-rw-r--r-- | source4/libcli/resolve/nbtlist.c | 1 | ||||
-rw-r--r-- | source4/nbt_server/wins/winswack.c | 3 | ||||
-rw-r--r-- | source4/torture/nbt/query.c | 2 | ||||
-rw-r--r-- | source4/torture/nbt/wins.c | 2 | ||||
-rw-r--r-- | source4/torture/nbt/winsbench.c | 2 | ||||
-rw-r--r-- | source4/utils/nmblookup.c | 12 |
8 files changed, 21 insertions, 4 deletions
diff --git a/source4/libcli/nbt/libnbt.h b/source4/libcli/nbt/libnbt.h index e383591089..2f7ce8d1b4 100644 --- a/source4/libcli/nbt/libnbt.h +++ b/source4/libcli/nbt/libnbt.h @@ -128,6 +128,7 @@ struct nbt_name_query { struct { struct nbt_name name; const char *dest_addr; + uint16_t dest_port; bool broadcast; bool wins_lookup; int timeout; /* in seconds */ diff --git a/source4/libcli/nbt/namequery.c b/source4/libcli/nbt/namequery.c index 755e06e880..6bc6878194 100644 --- a/source4/libcli/nbt/namequery.c +++ b/source4/libcli/nbt/namequery.c @@ -54,7 +54,7 @@ _PUBLIC_ struct nbt_name_request *nbt_name_query_send(struct nbt_name_socket *nb packet->questions[0].question_class = NBT_QCLASS_IP; dest = socket_address_from_strings(packet, nbtsock->sock->backend_name, - io->in.dest_addr, lp_nbt_port(global_loadparm)); + io->in.dest_addr, io->in.dest_port); if (dest == NULL) goto failed; req = nbt_name_request_send(nbtsock, dest, packet, io->in.timeout, io->in.retries, false); diff --git a/source4/libcli/resolve/nbtlist.c b/source4/libcli/resolve/nbtlist.c index baf3874aa4..13010eec3e 100644 --- a/source4/libcli/resolve/nbtlist.c +++ b/source4/libcli/resolve/nbtlist.c @@ -151,6 +151,7 @@ struct composite_context *resolve_name_nbtlist_send(TALLOC_CTX *mem_ctx, for (i=0;i<state->num_queries;i++) { state->io_queries[i].in.name = state->name; state->io_queries[i].in.dest_addr = talloc_strdup(state->io_queries, address_list[i]); + state->io_queries[i].in.dest_port = lp_nbt_port(global_loadparm); if (composite_nomem(state->io_queries[i].in.dest_addr, c)) return c; state->io_queries[i].in.broadcast = broadcast; diff --git a/source4/nbt_server/wins/winswack.c b/source4/nbt_server/wins/winswack.c index 304edcf8de..82b16bb20d 100644 --- a/source4/nbt_server/wins/winswack.c +++ b/source4/nbt_server/wins/winswack.c @@ -26,6 +26,7 @@ #include "nbt_server/wins/winsserver.h" #include "system/time.h" #include "libcli/composite/composite.h" +#include "param/param.h" struct wins_challenge_state { struct wins_challenge_io *io; @@ -46,6 +47,7 @@ static void wins_challenge_handler(struct nbt_name_request *req) if (state->current_address < state->io->in.num_addresses) { struct nbtd_interface *iface; + state->query.in.dest_port = lp_nbt_port(global_loadparm); state->query.in.dest_addr = state->io->in.addresses[state->current_address]; iface = nbtd_find_request_iface(state->io->in.nbtd_server, state->query.in.dest_addr, true); @@ -103,6 +105,7 @@ struct composite_context *wins_challenge_send(TALLOC_CTX *mem_ctx, struct wins_c /* setup a name query to the first address */ state->query.in.name = *state->io->in.name; + state->query.in.dest_port = lp_nbt_port(global_loadparm); state->query.in.dest_addr = state->io->in.addresses[state->current_address]; state->query.in.broadcast = false; state->query.in.wins_lookup = true; diff --git a/source4/torture/nbt/query.c b/source4/torture/nbt/query.c index 1040335227..c5104f5f06 100644 --- a/source4/torture/nbt/query.c +++ b/source4/torture/nbt/query.c @@ -24,6 +24,7 @@ #include "libcli/resolve/resolve.h" #include "torture/torture.h" #include "torture/nbt/proto.h" +#include "param/param.h" struct result_struct { int num_pass; @@ -61,6 +62,7 @@ static bool bench_namequery(struct torture_context *tctx) io.in.name = name; io.in.dest_addr = address; + io.in.dest_port = lp_nbt_port(global_loadparm); io.in.broadcast = false; io.in.wins_lookup = false; io.in.timeout = 1; diff --git a/source4/torture/nbt/wins.c b/source4/torture/nbt/wins.c index e25c3e78f0..fe87d7f971 100644 --- a/source4/torture/nbt/wins.c +++ b/source4/torture/nbt/wins.c @@ -27,6 +27,7 @@ #include "librpc/gen_ndr/ndr_nbt.h" #include "torture/torture.h" #include "torture/nbt/proto.h" +#include "param/param.h" #define CHECK_VALUE(tctx, v, correct) \ torture_assert_int_equal(tctx, v, correct, "Incorrect value") @@ -113,6 +114,7 @@ static bool nbt_test_wins_name(struct torture_context *tctx, const char *address torture_comment(tctx, "query the name to make sure its there\n"); query.in.name = *name; query.in.dest_addr = address; + query.in.dest_port = lp_nbt_port(tctx->lp_ctx); query.in.broadcast = false; query.in.wins_lookup = true; query.in.timeout = 3; diff --git a/source4/torture/nbt/winsbench.c b/source4/torture/nbt/winsbench.c index 27edd57206..34d27ab410 100644 --- a/source4/torture/nbt/winsbench.c +++ b/source4/torture/nbt/winsbench.c @@ -27,6 +27,7 @@ #include "lib/socket/netif.h" #include "torture/torture.h" #include "torture/nbt/proto.h" +#include "param/param.h" struct wins_state { int num_names; @@ -184,6 +185,7 @@ static void generate_query(struct nbt_name_socket *nbtsock, struct wins_state *s io.in.name = generate_name(tmp_ctx, idx); io.in.dest_addr = state->wins_server; + io.in.dest_port = lp_nbt_port(global_loadparm); io.in.broadcast = false; io.in.wins_lookup = true; io.in.timeout = 2; diff --git a/source4/utils/nmblookup.c b/source4/utils/nmblookup.c index ada5b839b7..2ff758d3b0 100644 --- a/source4/utils/nmblookup.c +++ b/source4/utils/nmblookup.c @@ -29,6 +29,7 @@ #include "lib/socket/netif.h" #include "librpc/gen_ndr/nbt.h" #include "libcli/nbt/libnbt.h" +#include "param/param.h" /* command line options */ static struct { @@ -142,6 +143,7 @@ static bool do_node_status(struct nbt_name_socket *nbtsock, /* do a single node query */ static NTSTATUS do_node_query(struct nbt_name_socket *nbtsock, const char *addr, + uint16_t port, const char *node_name, enum nbt_name_type node_type, bool broadcast) @@ -154,6 +156,7 @@ static NTSTATUS do_node_query(struct nbt_name_socket *nbtsock, io.in.name.type = node_type; io.in.name.scope = NULL; io.in.dest_addr = addr; + io.in.dest_port = port; io.in.broadcast = broadcast; io.in.wins_lookup = options.wins_lookup; io.in.timeout = 1; @@ -232,15 +235,18 @@ static bool process_one(const char *name) } if (options.broadcast_address) { - status = do_node_query(nbtsock, options.broadcast_address, node_name, node_type, true); + status = do_node_query(nbtsock, options.broadcast_address, lp_nbt_port(global_loadparm), + node_name, node_type, true); } else if (options.unicast_address) { - status = do_node_query(nbtsock, options.unicast_address, node_name, node_type, false); + status = do_node_query(nbtsock, options.unicast_address, + lp_nbt_port(global_loadparm), node_name, node_type, false); } else { int i, num_interfaces = iface_count(); for (i=0;i<num_interfaces;i++) { const char *bcast = iface_n_bcast(i); if (bcast == NULL) continue; - status = do_node_query(nbtsock, bcast, node_name, node_type, true); + status = do_node_query(nbtsock, bcast, lp_nbt_port(global_loadparm), + node_name, node_type, true); if (NT_STATUS_IS_OK(status)) break; } } |