>From c693bb1d171ab0022f7ce61b614c9f6a2a549c8b Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 12 Feb 2013 13:58:46 +0100 Subject: [PATCH 3/4] Move sss_cmd_execute from client to responder code. I think it logically belongs there and allows to better exercise the responder commands from unit tests. --- src/responder/common/responder.h | 4 +++- src/responder/common/responder_cmd.c | 8 +++----- src/responder/common/responder_common.c | 10 +++++++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h index a265d61d920d6f649f99aed0d30c17866c3fa4a4..110bd38d317dbacb10b636a6b56cdae8b7a1af9b 100644 --- a/src/responder/common/responder.h +++ b/src/responder/common/responder.h @@ -176,9 +176,11 @@ responder_get_domain(TALLOC_CTX *sd_mem_ctx, struct resp_ctx *rctx, int sss_cmd_empty_packet(struct sss_packet *packet); int sss_cmd_send_empty(struct cli_ctx *cctx, TALLOC_CTX *freectx); int sss_cmd_send_error(struct cli_ctx *cctx, int err); -int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds); void sss_cmd_done(struct cli_ctx *cctx, void *freectx); int sss_cmd_get_version(struct cli_ctx *cctx); +int sss_cmd_execute(struct cli_ctx *cctx, + enum sss_cli_command cmd, + struct sss_cmd_table *sss_cmds); struct cli_protocol_version *register_cli_protocol_version(void); struct setent_req_list; diff --git a/src/responder/common/responder_cmd.c b/src/responder/common/responder_cmd.c index cb57cba1a446cdf6ce1782b8d772b70c16ef1e07..3a3fca9b00682c23490509ebdd533bc01e9bb005 100644 --- a/src/responder/common/responder_cmd.c +++ b/src/responder/common/responder_cmd.c @@ -141,13 +141,12 @@ int sss_cmd_get_version(struct cli_ctx *cctx) return EOK; } -int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds) +int sss_cmd_execute(struct cli_ctx *cctx, + enum sss_cli_command cmd, + struct sss_cmd_table *sss_cmds) { - enum sss_cli_command cmd; int i; - cmd = sss_packet_get_cmd(cctx->creq->in); - for (i = 0; sss_cmds[i].cmd != SSS_CLI_NULL; i++) { if (cmd == sss_cmds[i].cmd) { return sss_cmds[i].fn(cctx); @@ -156,7 +155,6 @@ int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds) return EINVAL; } - struct setent_req_list { struct setent_req_list *prev; struct setent_req_list *next; diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 824c649a8c71ffad83e42e019292ea727ae2e4bf..a4355ae6c7f9831d797a06d2d0c947b0402ee81d 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -262,6 +262,14 @@ static void client_send(struct cli_ctx *cctx) return; } +static int client_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds) +{ + enum sss_cli_command cmd; + + cmd = sss_packet_get_cmd(cctx->creq->in); + return sss_cmd_execute(cctx, cmd, sss_cmds); +} + static void client_recv(struct cli_ctx *cctx) { int ret; @@ -291,7 +299,7 @@ static void client_recv(struct cli_ctx *cctx) /* do not read anymore */ TEVENT_FD_NOT_READABLE(cctx->cfde); /* execute command */ - ret = sss_cmd_execute(cctx, cctx->rctx->sss_cmds); + ret = client_cmd_execute(cctx, cctx->rctx->sss_cmds); if (ret != EOK) { DEBUG(0, ("Failed to execute request, aborting client!\n")); talloc_free(cctx); -- 1.8.1.4