diff options
author | Rafal Szczesniak <mimir@samba.org> | 2005-06-18 22:32:14 +0000 |
---|---|---|
committer | Rafal Szczesniak <mimir@samba.org> | 2005-06-18 22:32:14 +0000 |
commit | 9d500aaca3b1fa1876f613cbe29a090e072bc4a3 (patch) | |
tree | b49f3bb0307874f30e224fc0d2832b2991b0491d /source/libcli/resolve/resolve.c | |
parent | 28b8b8a4f5f0025a9037ab5e035aa0743e2fab07 (diff) | |
download | samba-9d500aaca3b1fa1876f613cbe29a090e072bc4a3.tar.gz samba-9d500aaca3b1fa1876f613cbe29a090e072bc4a3.tar.xz samba-9d500aaca3b1fa1876f613cbe29a090e072bc4a3.zip |
r7735: Extend resolve_name function so that it's possible to pass resolve
methods explicitly or NULL for defaults saved in smb.conf.
rafal
Diffstat (limited to 'source/libcli/resolve/resolve.c')
-rw-r--r-- | source/libcli/resolve/resolve.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/source/libcli/resolve/resolve.c b/source/libcli/resolve/resolve.c index a3bbd609200..0b7c359ca15 100644 --- a/source/libcli/resolve/resolve.c +++ b/source/libcli/resolve/resolve.c @@ -39,10 +39,11 @@ static const struct resolve_method { const char *name; struct composite_context *(*send_fn)(struct nbt_name *, struct event_context *); NTSTATUS (*recv_fn)(struct composite_context *, TALLOC_CTX *, const char **); + } methods[] = { - { "bcast", resolve_name_bcast_send, resolve_name_bcast_recv }, - { "wins", resolve_name_wins_send, resolve_name_wins_recv }, - { "host", resolve_name_host_send, resolve_name_host_recv } + { "bcast", resolve_name_bcast_send, resolve_name_bcast_recv }, + { "wins", resolve_name_wins_send, resolve_name_wins_recv }, + { "host", resolve_name_host_send, resolve_name_host_recv } }; @@ -115,7 +116,8 @@ static struct composite_context *setup_next_method(struct composite_context *c) /* general name resolution - async send */ -struct composite_context *resolve_name_send(struct nbt_name *name, struct event_context *event_ctx) +struct composite_context *resolve_name_send(struct nbt_name *name, struct event_context *event_ctx, + const char **methods) { struct composite_context *c; struct resolve_state *state; @@ -130,9 +132,15 @@ struct composite_context *resolve_name_send(struct nbt_name *name, struct event_ status = nbt_name_dup(state, name, &state->name); if (!NT_STATUS_IS_OK(status)) goto failed; - state->methods = lp_name_resolve_order(); - if (state->methods == NULL) { - return NULL; + /* use default methods from config file if not passed explicitly */ + if (methods == NULL) { + state->methods = lp_name_resolve_order(); + if (state->methods == NULL) { + return NULL; + } + + } else { + state->methods = methods; } c->state = SMBCLI_REQUEST_SEND; @@ -178,7 +186,7 @@ NTSTATUS resolve_name_recv(struct composite_context *c, */ NTSTATUS resolve_name(struct nbt_name *name, TALLOC_CTX *mem_ctx, const char **reply_addr) { - struct composite_context *c = resolve_name_send(name, NULL); + struct composite_context *c = resolve_name_send(name, NULL, NULL); return resolve_name_recv(c, mem_ctx, reply_addr); } |