Add context for libcli_resolve.
[samba-svnmirror.git] / source / libcli / resolve / wins.c
index 2cbcd5f4836dc50a98ca28e3c5d6fc935a70e306..73b9413eb4805b6465149b4d4b762923cfcf9f0a 100644 (file)
 #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);
+}