mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
journal-remote: split-mode=host, remove port from journal filename
When constructing the journal filename to store logs from a remote host, remove the port of the tcp connection, as the port will change with every reboot/connection loss between sender/reveiver machines. Having the port in the filename will cause a new journal file to be created for every reboot or connection loss. For the implementation, a new argument "bool include_port" is added to the getpeername_pretty() function. This is passed to the sockaddr_pretty() function. The value of the include_port argument is set to true in all calls of getpeername_pretty(), except for 2 calls in journal-remote.c, where it is set to false.
This commit is contained in:
parent
c0f1f52317
commit
366b7db4b6
@ -272,7 +272,7 @@ static int do_accept(const char* name, char **argv, char **envp, int fd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getsockname_pretty(fd2, &local);
|
getsockname_pretty(fd2, &local);
|
||||||
getpeername_pretty(fd2, &peer);
|
getpeername_pretty(fd2, true, &peer);
|
||||||
log_info("Connection from %s to %s", strna(peer), strna(local));
|
log_info("Connection from %s to %s", strna(peer), strna(local));
|
||||||
|
|
||||||
return launch1(name, argv, envp, fd2);
|
return launch1(name, argv, envp, fd2);
|
||||||
|
@ -608,7 +608,7 @@ int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getpeername_pretty(int fd, char **ret) {
|
int getpeername_pretty(int fd, bool include_port, char **ret) {
|
||||||
union sockaddr_union sa;
|
union sockaddr_union sa;
|
||||||
socklen_t salen = sizeof(sa);
|
socklen_t salen = sizeof(sa);
|
||||||
int r;
|
int r;
|
||||||
@ -638,7 +638,7 @@ int getpeername_pretty(int fd, char **ret) {
|
|||||||
/* For remote sockets we translate IPv6 addresses back to IPv4
|
/* For remote sockets we translate IPv6 addresses back to IPv4
|
||||||
* if applicable, since that's nicer. */
|
* if applicable, since that's nicer. */
|
||||||
|
|
||||||
return sockaddr_pretty(&sa.sa, salen, true, true, ret);
|
return sockaddr_pretty(&sa.sa, salen, true, include_port, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getsockname_pretty(int fd, char **ret) {
|
int getsockname_pretty(int fd, char **ret) {
|
||||||
|
@ -105,7 +105,7 @@ bool socket_ipv6_is_supported(void);
|
|||||||
int sockaddr_port(const struct sockaddr *_sa) _pure_;
|
int sockaddr_port(const struct sockaddr *_sa) _pure_;
|
||||||
|
|
||||||
int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, bool include_port, char **ret);
|
int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, bool include_port, char **ret);
|
||||||
int getpeername_pretty(int fd, char **ret);
|
int getpeername_pretty(int fd, bool include_port, char **ret);
|
||||||
int getsockname_pretty(int fd, char **ret);
|
int getsockname_pretty(int fd, char **ret);
|
||||||
|
|
||||||
int socknameinfo_pretty(union sockaddr_union *sa, socklen_t salen, char **_ret);
|
int socknameinfo_pretty(union sockaddr_union *sa, socklen_t salen, char **_ret);
|
||||||
|
@ -3187,7 +3187,7 @@ int service_set_socket_fd(Service *s, int fd, Socket *sock, bool selinux_context
|
|||||||
if (s->state != SERVICE_DEAD)
|
if (s->state != SERVICE_DEAD)
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
|
||||||
if (getpeername_pretty(fd, &peer) >= 0) {
|
if (getpeername_pretty(fd, true, &peer) >= 0) {
|
||||||
|
|
||||||
if (UNIT(s)->description) {
|
if (UNIT(s)->description) {
|
||||||
_cleanup_free_ char *a;
|
_cleanup_free_ char *a;
|
||||||
|
@ -621,7 +621,7 @@ static int request_handler(
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return code;
|
return code;
|
||||||
} else {
|
} else {
|
||||||
r = getnameinfo_pretty(fd, &hostname);
|
r = getpeername_pretty(fd, false, &hostname);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return mhd_respond(connection, MHD_HTTP_INTERNAL_SERVER_ERROR,
|
return mhd_respond(connection, MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||||
"Cannot check remote hostname");
|
"Cannot check remote hostname");
|
||||||
@ -879,7 +879,7 @@ static int remoteserver_init(RemoteServer *s,
|
|||||||
} else if (sd_is_socket(fd, AF_UNSPEC, 0, false)) {
|
} else if (sd_is_socket(fd, AF_UNSPEC, 0, false)) {
|
||||||
char *hostname;
|
char *hostname;
|
||||||
|
|
||||||
r = getnameinfo_pretty(fd, &hostname);
|
r = getpeername_pretty(fd, false, &hostname);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to retrieve remote name: %m");
|
return log_error_errno(r, "Failed to retrieve remote name: %m");
|
||||||
|
|
||||||
|
@ -505,7 +505,7 @@ static int accept_cb(sd_event_source *s, int fd, uint32_t revents, void *userdat
|
|||||||
if (errno != -EAGAIN)
|
if (errno != -EAGAIN)
|
||||||
log_warning_errno(errno, "Failed to accept() socket: %m");
|
log_warning_errno(errno, "Failed to accept() socket: %m");
|
||||||
} else {
|
} else {
|
||||||
getpeername_pretty(nfd, &peer);
|
getpeername_pretty(nfd, true, &peer);
|
||||||
log_debug("New connection from %s", strna(peer));
|
log_debug("New connection from %s", strna(peer));
|
||||||
|
|
||||||
r = add_connection_socket(context, nfd);
|
r = add_connection_socket(context, nfd);
|
||||||
|
Loading…
Reference in New Issue
Block a user