From 11cd9b94e6fc6ce22387a49f146f875c03bf9b54 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 27 Mar 2009 13:53:16 -0400 Subject: Make nsssrv use the common responder functions Make nss_ctx a private pointer of the common resp_ctx Use sss_process_init and remove all duplicate functions from nsssrv.c --- server/responder/common/responder_cmd.c | 15 ++++----------- server/responder/common/responder_cmd.h | 22 ++++++---------------- server/responder/common/responder_common.c | 9 ++------- server/responder/common/responder_common.h | 2 +- 4 files changed, 13 insertions(+), 35 deletions(-) (limited to 'server/responder/common') diff --git a/server/responder/common/responder_cmd.c b/server/responder/common/responder_cmd.c index f3fbf4794..a434b3e12 100644 --- a/server/responder/common/responder_cmd.c +++ b/server/responder/common/responder_cmd.c @@ -24,29 +24,22 @@ #include "responder/common/responder_packet.h" -void sss_cmd_done(struct sss_cmd_ctx *nctx) +void sss_cmd_done(struct cli_ctx *cctx, void *freectx) { /* now that the packet is in place, unlock queue * making the event writable */ - TEVENT_FD_WRITEABLE(nctx->cctx->cfde); + TEVENT_FD_WRITEABLE(cctx->cfde); /* free all request related data through the talloc hierarchy */ - talloc_free(nctx); + talloc_free(freectx); } int sss_cmd_get_version(struct cli_ctx *cctx) { - struct sss_cmd_ctx *nctx; uint8_t *body; size_t blen; int ret; - nctx = talloc(cctx, struct sss_cmd_ctx); - if (!nctx) { - return ENOMEM; - } - nctx->cctx = cctx; - /* create response packet */ ret = sss_packet_new(cctx->creq, sizeof(uint32_t), sss_packet_get_cmd(cctx->creq->in), @@ -57,7 +50,7 @@ int sss_cmd_get_version(struct cli_ctx *cctx) sss_packet_get_body(cctx->creq->out, &body, &blen); ((uint32_t *)body)[0] = SSS_PROTOCOL_VERSION; - sss_cmd_done(nctx); + sss_cmd_done(cctx, NULL); return EOK; } diff --git a/server/responder/common/responder_cmd.h b/server/responder/common/responder_cmd.h index b91fc23a1..eb3bd082e 100644 --- a/server/responder/common/responder_cmd.h +++ b/server/responder/common/responder_cmd.h @@ -28,9 +28,9 @@ #include "tevent.h" #include "ldb.h" #include "../sss_client/sss_cli.h" +#include "util/btreemap.h" /* needed until nsssrv.h is updated */ -#ifndef __NSSSRV_H__ struct cli_request { /* original request from the wire */ @@ -52,18 +52,18 @@ struct resp_ctx { const char *priv_sock_name; struct service_sbus_ctx *ss_ctx; struct service_sbus_ctx *dp_ctx; + struct btreemap *domain_map; char *default_domain; - int cache_timeout; - struct sbus_method *sss_sbus_methods; struct sss_cmd_table *sss_cmds; const char *sss_pipe_name; - const char *confdb_socket_path; + const char *confdb_service_path; struct sbus_method *dp_methods; -}; + void *pvt_ctx; +}; struct cli_ctx { struct tevent_context *ev; @@ -72,18 +72,8 @@ struct cli_ctx { struct tevent_fd *cfde; struct sockaddr_un addr; struct cli_request *creq; - struct getent_ctx *gctx; int priv; }; -#endif - -struct sss_cmd_ctx { - struct cli_ctx *cctx; - const char *domain; - const char *name; - uid_t id; - bool check_expiration; -}; struct sss_cmd_table { enum sss_cli_command cmd; @@ -91,7 +81,7 @@ struct sss_cmd_table { }; int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds); -void sss_cmd_done(struct sss_cmd_ctx *nctx); +void sss_cmd_done(struct cli_ctx *cctx, void *freectx); int sss_cmd_get_version(struct cli_ctx *cctx); #endif /* __SSSSRV_CMD_H__ */ diff --git a/server/responder/common/responder_common.c b/server/responder/common/responder_common.c index 3b566b9c1..fa024d53e 100644 --- a/server/responder/common/responder_common.c +++ b/server/responder/common/responder_common.c @@ -455,11 +455,9 @@ failed: static int sss_init_domains(struct resp_ctx *rctx) { - TALLOC_CTX *tmp_ctx; int ret; int retval; - tmp_ctx = talloc_new(rctx); ret = confdb_get_domains(rctx->cdb, rctx, &rctx->domain_map); if (ret != EOK) { retval = ret; @@ -486,7 +484,6 @@ static int sss_init_domains(struct resp_ctx *rctx) retval = EOK; done: - talloc_free(tmp_ctx); return retval; } @@ -497,7 +494,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx, struct sss_cmd_table sss_cmds[], const char *sss_pipe_name, const char *sss_priv_pipe_name, - const char *confdb_socket_path, + const char *confdb_service_path, struct sbus_method dp_methods[], struct resp_ctx **responder_ctx) { @@ -515,7 +512,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx, rctx->sss_cmds = sss_cmds; rctx->sock_name = sss_pipe_name; rctx->priv_sock_name = sss_priv_pipe_name; - rctx->confdb_socket_path = confdb_socket_path; + rctx->confdb_service_path = confdb_service_path; rctx->dp_methods = dp_methods; ret = sss_init_domains(rctx); @@ -549,8 +546,6 @@ int sss_process_init(TALLOC_CTX *mem_ctx, return ret; } - rctx->cache_timeout = 600; /* FIXME: read from conf */ - DEBUG(1, ("Responder Initialization complete\n")); *responder_ctx = rctx; diff --git a/server/responder/common/responder_common.h b/server/responder/common/responder_common.h index 66e01f9d5..8a7af08ad 100644 --- a/server/responder/common/responder_common.h +++ b/server/responder/common/responder_common.h @@ -16,7 +16,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx, struct sss_cmd_table sss_cmds[], const char *sss_pipe_name, const char *sss_priv_pipe_name, - const char *confdb_socket_path, + const char *confdb_service_path, struct sbus_method dp_methods[], struct resp_ctx **responder_ctx); -- cgit