summaryrefslogtreecommitdiff
path: root/source4/libcli/resolve/wins.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/resolve/wins.c')
-rw-r--r--source4/libcli/resolve/wins.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/source4/libcli/resolve/wins.c b/source4/libcli/resolve/wins.c
index 2cbcd5f483..73b9413eb4 100644
--- a/source4/libcli/resolve/wins.c
+++ b/source4/libcli/resolve/wins.c
@@ -24,17 +24,22 @@
#include "libcli/resolve/resolve.h"
#include "param/param.h"
-/*
+struct resolve_wins_data {
+ const char **address_list;
+};
+
+/**
wins name resolution method - async send
*/
struct composite_context *resolve_name_wins_send(
TALLOC_CTX *mem_ctx,
struct event_context *event_ctx,
+ void *userdata,
struct nbt_name *name)
{
- const char **address_list = lp_wins_server_list(global_loadparm);
- if (address_list == NULL) return NULL;
- return resolve_name_nbtlist_send(mem_ctx, event_ctx, name, address_list, false, true);
+ struct resolve_wins_data *wins_data = talloc_get_type(userdata, struct resolve_wins_data);
+ if (wins_data->address_list == NULL) return NULL;
+ return resolve_name_nbtlist_send(mem_ctx, event_ctx, name, wins_data->address_list, false, true);
}
/*
@@ -51,9 +56,20 @@ NTSTATUS resolve_name_wins_recv(struct composite_context *c,
*/
NTSTATUS resolve_name_wins(struct nbt_name *name,
TALLOC_CTX *mem_ctx,
+ const char **address_list,
const char **reply_addr)
{
- struct composite_context *c = resolve_name_wins_send(mem_ctx, NULL, name);
+ struct composite_context *c;
+ struct resolve_wins_data *wins_data = talloc(mem_ctx, struct resolve_wins_data);
+ wins_data->address_list = address_list;
+ c = resolve_name_wins_send(mem_ctx, NULL, wins_data, name);
return resolve_name_wins_recv(c, mem_ctx, reply_addr);
}
+bool resolve_context_add_wins_method(struct resolve_context *ctx, const char **address_list)
+{
+ struct resolve_wins_data *wins_data = talloc(ctx, struct resolve_wins_data);
+ wins_data->address_list = str_list_copy(wins_data, address_list);
+ return resolve_context_add_method(ctx, resolve_name_wins_send, resolve_name_wins_recv,
+ wins_data);
+}