summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2009-12-02 14:44:53 +0100
committerStephen Gallagher <sgallagh@redhat.com>2009-12-03 10:26:36 -0500
commit75d30d6bb50f6d60b3401c2f7dd120524e83650f (patch)
tree830eaa00e2bc28a8a8167b02d7e23fb5eb8cd3fa /server
parentaf6ee64d231ccd04ce9c9dbe37a751d2d8a8d3cd (diff)
downloadsssd-75d30d6bb50f6d60b3401c2f7dd120524e83650f.tar.gz
sssd-75d30d6bb50f6d60b3401c2f7dd120524e83650f.tar.xz
sssd-75d30d6bb50f6d60b3401c2f7dd120524e83650f.zip
Setup ldap child logging from IPA backend
Fixes: #296
Diffstat (limited to 'server')
-rw-r--r--server/providers/ipa/ipa_init.c7
-rw-r--r--server/providers/ldap/ldap_common.h3
-rw-r--r--server/providers/ldap/ldap_init.c45
-rw-r--r--server/providers/ldap/sdap_child_helpers.c44
4 files changed, 54 insertions, 45 deletions
diff --git a/server/providers/ipa/ipa_init.c b/server/providers/ipa/ipa_init.c
index a187d1590..10b9257a2 100644
--- a/server/providers/ipa/ipa_init.c
+++ b/server/providers/ipa/ipa_init.c
@@ -140,6 +140,13 @@ int sssm_ipa_init(struct be_ctx *bectx,
goto done;
}
+ ret = setup_child(ctx);
+ if (ret != EOK) {
+ DEBUG(1, ("setup_child failed [%d][%s].\n",
+ ret, strerror(ret)));
+ goto done;
+ }
+
*ops = &ipa_id_ops;
*pvt_data = ctx;
ret = EOK;
diff --git a/server/providers/ldap/ldap_common.h b/server/providers/ldap/ldap_common.h
index 188a7b986..b1985455c 100644
--- a/server/providers/ldap/ldap_common.h
+++ b/server/providers/ldap/ldap_common.h
@@ -108,4 +108,7 @@ struct tevent_req *groups_get_send(TALLOC_CTX *memctx,
int attrs_type);
int groups_get_recv(struct tevent_req *req);
+/* setup child logging */
+int setup_child(struct sdap_id_ctx *ctx);
+
#endif /* _LDAP_COMMON_H_ */
diff --git a/server/providers/ldap/ldap_init.c b/server/providers/ldap/ldap_init.c
index c6241bf5d..b1f053fbc 100644
--- a/server/providers/ldap/ldap_init.c
+++ b/server/providers/ldap/ldap_init.c
@@ -22,8 +22,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <fcntl.h>
-
#include "providers/child_common.h"
#include "providers/ldap/ldap_common.h"
#include "providers/ldap/sdap_async_private.h"
@@ -48,49 +46,6 @@ struct bet_ops sdap_chpass_ops = {
.finalize = sdap_shutdown
};
-static int setup_child(struct sdap_id_ctx *ctx)
-{
- int ret;
- const char *mech;
- struct tevent_signal *sige;
- unsigned v;
- FILE *debug_filep;
-
- mech = dp_opt_get_string(ctx->opts->basic,
- SDAP_SASL_MECH);
- if (!mech) {
- return EOK;
- }
-
- sige = tevent_add_signal(ctx->be->ev, ctx, SIGCHLD, SA_SIGINFO,
- child_sig_handler, NULL);
- if (sige == NULL) {
- DEBUG(1, ("tevent_add_signal failed.\n"));
- return ENOMEM;
- }
-
- if (debug_to_file != 0 && ldap_child_debug_fd == -1) {
- ret = open_debug_file_ex("ldap_child", &debug_filep);
- if (ret != EOK) {
- DEBUG(0, ("Error setting up logging (%d) [%s]\n",
- ret, strerror(ret)));
- return ret;
- }
-
- ldap_child_debug_fd = fileno(debug_filep);
- if (ldap_child_debug_fd == -1) {
- DEBUG(0, ("fileno failed [%d][%s]\n", errno, strerror(errno)));
- ret = errno;
- return ret;
- }
-
- v = fcntl(ldap_child_debug_fd, F_GETFD, 0);
- fcntl(ldap_child_debug_fd, F_SETFD, v & ~FD_CLOEXEC);
- }
-
- return EOK;
-}
-
int sssm_ldap_init(struct be_ctx *bectx,
struct bet_ops **ops,
void **pvt_data)
diff --git a/server/providers/ldap/sdap_child_helpers.c b/server/providers/ldap/sdap_child_helpers.c
index 85f7d3c86..69b246ca7 100644
--- a/server/providers/ldap/sdap_child_helpers.c
+++ b/server/providers/ldap/sdap_child_helpers.c
@@ -26,6 +26,7 @@
#include <sys/wait.h>
#include <pwd.h>
#include <unistd.h>
+#include <fcntl.h>
#include "util/util.h"
#include "providers/ldap/ldap_common.h"
@@ -498,3 +499,46 @@ int sdap_krb5_get_tgt_recv(struct tevent_req *req,
return EOK;
}
+/* Setup child logging */
+int setup_child(struct sdap_id_ctx *ctx)
+{
+ int ret;
+ const char *mech;
+ struct tevent_signal *sige;
+ unsigned v;
+ FILE *debug_filep;
+
+ mech = dp_opt_get_string(ctx->opts->basic,
+ SDAP_SASL_MECH);
+ if (!mech) {
+ return EOK;
+ }
+
+ sige = tevent_add_signal(ctx->be->ev, ctx, SIGCHLD, SA_SIGINFO,
+ child_sig_handler, NULL);
+ if (sige == NULL) {
+ DEBUG(1, ("tevent_add_signal failed.\n"));
+ return ENOMEM;
+ }
+
+ if (debug_to_file != 0 && ldap_child_debug_fd == -1) {
+ ret = open_debug_file_ex("ldap_child", &debug_filep);
+ if (ret != EOK) {
+ DEBUG(0, ("Error setting up logging (%d) [%s]\n",
+ ret, strerror(ret)));
+ return ret;
+ }
+
+ ldap_child_debug_fd = fileno(debug_filep);
+ if (ldap_child_debug_fd == -1) {
+ DEBUG(0, ("fileno failed [%d][%s]\n", errno, strerror(errno)));
+ ret = errno;
+ return ret;
+ }
+
+ v = fcntl(ldap_child_debug_fd, F_GETFD, 0);
+ fcntl(ldap_child_debug_fd, F_SETFD, v & ~FD_CLOEXEC);
+ }
+
+ return EOK;
+}