From 081f8883bafc11ca7c08f868ec19f1ea32071837 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 17 Dec 2008 00:06:34 +0100 Subject: s4: fix LIBEVENTS dependencies and use more forward declarations We should only include events.h where we really need it and prefer forward declarations of 'struct event_context' metze --- source4/libcli/resolve/resolve.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source4/libcli/resolve/resolve.c') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index 7d1c48cbee..12764e1084 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -21,7 +21,6 @@ */ #include "includes.h" -#include "lib/events/events.h" #include "libcli/composite/composite.h" #include "libcli/resolve/resolve.h" #include "librpc/gen_ndr/ndr_nbt.h" -- cgit From c8565c0e7acc6febf1b4015bde6baa1c5b7adddc Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 13 Dec 2008 10:57:44 +0100 Subject: s4:libcli/resolve: remove all backend specific sync functions metze --- source4/libcli/resolve/resolve.c | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'source4/libcli/resolve/resolve.c') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index 12764e1084..68b806506d 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -199,19 +199,6 @@ NTSTATUS resolve_name_all_recv(struct composite_context *c, return status; } -/* - general name resolution - sync call - */ -NTSTATUS resolve_all_name(struct resolve_context *ctx, - struct nbt_name *name, - TALLOC_CTX *mem_ctx, - struct socket_address ***addrs, - struct event_context *ev) -{ - struct composite_context *c = resolve_name_all_send(ctx, name, ev); - return resolve_name_all_recv(c, mem_ctx, addrs); -} - struct composite_context *resolve_name_send(struct resolve_context *ctx, struct nbt_name *name, struct event_context *event_ctx) -- cgit From 937fdb8a7e348103708adbdafcff28b05cc1fda3 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 13 Dec 2008 11:03:52 +0100 Subject: s4:libcli/resolve: pass down flags to the resolver backends metze --- source4/libcli/resolve/resolve.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'source4/libcli/resolve/resolve.c') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index 68b806506d..072eeabb7a 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -31,6 +31,7 @@ struct resolve_state { struct resolve_context *ctx; struct resolve_method *method; + uint32_t flags; struct nbt_name name; struct composite_context *creq; struct socket_address **addrs; @@ -111,7 +112,10 @@ static struct composite_context *setup_next_method(struct composite_context *c) do { if (state->method) { - creq = state->method->send_fn(c, c->event_ctx, state->method->privdata, &state->name); + creq = state->method->send_fn(c, c->event_ctx, + state->method->privdata, + state->flags, + &state->name); } if (creq == NULL && state->method) state->method = state->method->next; @@ -129,6 +133,7 @@ static struct composite_context *setup_next_method(struct composite_context *c) general name resolution - async send */ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, + uint32_t flags, struct nbt_name *name, struct event_context *event_ctx) { @@ -148,6 +153,8 @@ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, if (composite_nomem(state, c)) return c; c->private_data = state; + state->flags = flags; + c->status = nbt_name_dup(state, name, &state->name); if (!composite_is_ok(c)) return c; @@ -203,7 +210,7 @@ struct composite_context *resolve_name_send(struct resolve_context *ctx, struct nbt_name *name, struct event_context *event_ctx) { - return resolve_name_all_send(ctx, name, event_ctx); + return resolve_name_all_send(ctx, 0, name, event_ctx); } NTSTATUS resolve_name_recv(struct composite_context *c, -- cgit From 7d0e78a52cfed797100696725611655227cf01ac Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 13 Dec 2008 20:50:36 +0100 Subject: s4:libcli/resolve: optionally return the name that belongs to the returned address E.g. this helps for DNS CNAME and SRV results. metze --- source4/libcli/resolve/resolve.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'source4/libcli/resolve/resolve.c') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index 072eeabb7a..b688dc7a76 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -35,6 +35,7 @@ struct resolve_state { struct nbt_name name; struct composite_context *creq; struct socket_address **addrs; + char **names; }; static struct composite_context *setup_next_method(struct composite_context *c); @@ -84,7 +85,7 @@ static void resolve_handler(struct composite_context *creq) struct resolve_state *state = talloc_get_type(c->private_data, struct resolve_state); const struct resolve_method *method = state->method; - c->status = method->recv_fn(creq, state, &state->addrs); + c->status = method->recv_fn(creq, state, &state->addrs, &state->names); if (!NT_STATUS_IS_OK(c->status)) { state->method = state->method->next; @@ -171,6 +172,11 @@ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, inet_ntoa(ip), 0); if (composite_nomem(state->addrs[0], c)) return c; state->addrs[1] = NULL; + state->names = talloc_array(state, char *, 2); + if (composite_nomem(state->names, c)) return c; + state->names[0] = talloc_strdup(state->names, state->name.name); + if (composite_nomem(state->names[0], c)) return c; + state->names[1] = NULL; composite_done(c); return c; } @@ -191,7 +197,8 @@ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, */ NTSTATUS resolve_name_all_recv(struct composite_context *c, TALLOC_CTX *mem_ctx, - struct socket_address ***addrs) + struct socket_address ***addrs, + char ***names) { NTSTATUS status; @@ -200,6 +207,9 @@ NTSTATUS resolve_name_all_recv(struct composite_context *c, if (NT_STATUS_IS_OK(status)) { struct resolve_state *state = talloc_get_type(c->private_data, struct resolve_state); *addrs = talloc_steal(mem_ctx, state->addrs); + if (names) { + *names = talloc_steal(mem_ctx, state->names); + } } talloc_free(c); @@ -220,7 +230,7 @@ NTSTATUS resolve_name_recv(struct composite_context *c, NTSTATUS status; struct socket_address **addrs = NULL; - status = resolve_name_all_recv(c, mem_ctx, &addrs); + status = resolve_name_all_recv(c, mem_ctx, &addrs, NULL); if (NT_STATUS_IS_OK(status)) { *reply_addr = talloc_steal(mem_ctx, addrs[0]->addr); -- cgit From 116fbd6b5a82a2e9f2440aae4ad56cf8a457c85b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 17 Dec 2008 17:25:40 +0100 Subject: s4:libcli/resolve: specify the port for the resulting socket_addresses metze --- source4/libcli/resolve/resolve.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/libcli/resolve/resolve.c') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index b688dc7a76..752678abb8 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -32,6 +32,7 @@ struct resolve_state { struct resolve_context *ctx; struct resolve_method *method; uint32_t flags; + uint16_t port; struct nbt_name name; struct composite_context *creq; struct socket_address **addrs; @@ -116,6 +117,7 @@ static struct composite_context *setup_next_method(struct composite_context *c) creq = state->method->send_fn(c, c->event_ctx, state->method->privdata, state->flags, + state->port, &state->name); } if (creq == NULL && state->method) state->method = state->method->next; @@ -135,6 +137,7 @@ static struct composite_context *setup_next_method(struct composite_context *c) */ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, uint32_t flags, + uint16_t port, struct nbt_name *name, struct event_context *event_ctx) { @@ -155,6 +158,7 @@ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, c->private_data = state; state->flags = flags; + state->port = port; c->status = nbt_name_dup(state, name, &state->name); if (!composite_is_ok(c)) return c; @@ -220,7 +224,7 @@ struct composite_context *resolve_name_send(struct resolve_context *ctx, struct nbt_name *name, struct event_context *event_ctx) { - return resolve_name_all_send(ctx, 0, name, event_ctx); + return resolve_name_all_send(ctx, 0, 0, name, event_ctx); } NTSTATUS resolve_name_recv(struct composite_context *c, -- cgit