The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2710

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Hello,

A function is added to inherit file descriptors of dlog to print dlog.

Thanks.

Signed-off-by: 2xsec <dh48.je...@samsung.com>
From 81b542493655eba8ed04aca7679854b0f438514a Mon Sep 17 00:00:00 2001
From: 2xsec <dh48.je...@samsung.com>
Date: Tue, 23 Oct 2018 19:07:07 +0900
Subject: [PATCH] dlog: inherit dlog fds

Signed-off-by: 2xsec <dh48.je...@samsung.com>
---
 src/lxc/start.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index 55c2e0e99..a7563bf78 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -204,6 +204,35 @@ static inline bool match_stdfds(int fd)
        return (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == 
STDERR_FILENO);
 }
 
+#ifdef HAVE_DLOG
+static bool match_dlog_fds(struct dirent *direntp)
+{
+       char path[PATH_MAX] = {0};
+       char link[PATH_MAX] = {0};
+       ssize_t linklen;
+       int ret;
+
+       ret = snprintf(path, PATH_MAX, "/proc/self/fd/%s", direntp->d_name);
+       if (ret < 0 || ret >= PATH_MAX) {
+               ERROR("Failed to create file descriptor name");
+               return false;
+       }
+
+       linklen = readlink(path, link, PATH_MAX);
+       if (linklen < 0 || linklen >= PATH_MAX) {
+               SYSERROR("Failed to read link path - \"%s\"", path);
+               return false;
+       }
+
+       if (strcmp(link, "/dev/log_main") == 0 ||
+           strcmp(link, "/dev/log_system") == 0 ||
+           strcmp(link, "/dev/log_radio") == 0)
+               return true;
+
+       return false;
+}
+#endif
+
 int lxc_check_inherited(struct lxc_conf *conf, bool closeall,
                        int *fds_to_ignore, size_t len_fds)
 {
@@ -265,6 +294,11 @@ int lxc_check_inherited(struct lxc_conf *conf, bool 
closeall,
                if (matched)
                        continue;
 
+#ifdef HAVE_DLOG
+               if (match_dlog_fds(direntp))
+                       continue;
+
+#endif
                if (current_config && fd == current_config->logfd)
                        continue;
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to