diff --git a/source4/libcli/nbt/libnbt.h b/source4/libcli/nbt/libnbt.h index 88ca0e204bf..524391917d6 100644 --- a/source4/libcli/nbt/libnbt.h +++ b/source4/libcli/nbt/libnbt.h @@ -163,6 +163,7 @@ struct nbt_name_register { struct { struct nbt_name name; const char *dest_addr; + uint16_t dest_port; const char *address; uint16_t nb_flags; bool register_demand; diff --git a/source4/libcli/nbt/nameregister.c b/source4/libcli/nbt/nameregister.c index fd4a94dd44e..9389981647d 100644 --- a/source4/libcli/nbt/nameregister.c +++ b/source4/libcli/nbt/nameregister.c @@ -77,7 +77,7 @@ struct nbt_name_request *nbt_name_register_send(struct nbt_name_socket *nbtsock, if (packet->additional[0].rdata.netbios.addresses[0].ipaddr == NULL) goto failed; 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); @@ -224,6 +224,7 @@ struct composite_context *nbt_name_register_bcast_send(struct nbt_name_socket *n state->io->in.name = io->in.name; state->io->in.dest_addr = io->in.dest_addr; + state->io->in.dest_port = lp_nbt_port(global_loadparm); state->io->in.address = io->in.address; state->io->in.nb_flags = io->in.nb_flags; state->io->in.register_demand = false; @@ -311,6 +312,7 @@ static void name_register_wins_handler(struct nbt_name_request *req) goto done; } state->io->in.dest_addr = state->wins_servers[0]; + state->io->in.dest_port = lp_nbt_port(global_loadparm); state->io->in.address = state->addresses[0]; state->req = nbt_name_register_send(state->nbtsock, state->io); if (state->req == NULL) { @@ -377,6 +379,7 @@ struct composite_context *nbt_name_register_wins_send(struct nbt_name_socket *nb state->io->in.name = io->in.name; state->io->in.dest_addr = state->wins_servers[0]; + state->io->in.dest_port = lp_nbt_port(global_loadparm); state->io->in.address = io->in.addresses[0]; state->io->in.nb_flags = io->in.nb_flags; state->io->in.broadcast = false; diff --git a/source4/nbt_server/register.c b/source4/nbt_server/register.c index c185001e23d..bde9b1e2db8 100644 --- a/source4/nbt_server/register.c +++ b/source4/nbt_server/register.c @@ -93,6 +93,7 @@ static void name_refresh_handler(struct event_context *ev, struct timed_event *t registration packets */ io.in.name = iname->name; io.in.dest_addr = iface->bcast_address; + io.in.dest_port = lp_nbt_port(iface->nbtsrv->task->lp_ctx); io.in.address = iface->ip_address; io.in.nb_flags = iname->nb_flags; io.in.ttl = iname->ttl; diff --git a/source4/torture/nbt/register.c b/source4/torture/nbt/register.c index c7f992cbd60..2c37d9de501 100644 --- a/source4/torture/nbt/register.c +++ b/source4/torture/nbt/register.c @@ -67,6 +67,7 @@ static bool nbt_register_own(struct torture_context *tctx) io.in.name = name; io.in.dest_addr = address; + io.in.dest_port = lp_nbt_port(tctx->lp_ctx); io.in.address = myaddress; io.in.nb_flags = NBT_NODE_B | NBT_NM_ACTIVE; io.in.register_demand = false; diff --git a/source4/torture/nbt/winsbench.c b/source4/torture/nbt/winsbench.c index 82223d9dd7a..d49b50b9d3a 100644 --- a/source4/torture/nbt/winsbench.c +++ b/source4/torture/nbt/winsbench.c @@ -87,6 +87,7 @@ static void generate_register(struct nbt_name_socket *nbtsock, struct wins_state 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.address = state->my_ip; io.in.nb_flags = NBT_NODE_H; io.in.register_demand = false; diff --git a/source4/torture/nbt/winsreplication.c b/source4/torture/nbt/winsreplication.c index b427843b80e..f67b6050f27 100644 --- a/source4/torture/nbt/winsreplication.c +++ b/source4/torture/nbt/winsreplication.c @@ -6530,6 +6530,7 @@ static bool test_conflict_owned_released_vs_replica(struct torture_context *tctx */ name_register->in.name = records[i].name; name_register->in.dest_addr = ctx->address; + name_register->in.dest_port = lp_nbt_port(tctx->lp_ctx); name_register->in.address = records[i].wins.ips[0].ip; name_register->in.nb_flags = records[i].wins.nb_flags; name_register->in.register_demand= false; @@ -9218,6 +9219,7 @@ static bool test_conflict_owned_active_vs_replica(struct torture_context *tctx, name_register->in.name = records[i].name; name_register->in.dest_addr = ctx->address; + name_register->in.dest_port = lp_nbt_port(tctx->lp_ctx); name_register->in.address = records[i].wins.ips[j].ip; name_register->in.nb_flags = records[i].wins.nb_flags; name_register->in.register_demand= false;