Commit b245cbdd authored by Jakub Janků's avatar Jakub Janků Committed by Victor Toso
Browse files

udscs: simplify traffic logging



Remove @type_to_string, @no_types arguments from
udscs_connect(), udscs_create_server{,_for_fd}().
udscs is used only in vdagent.c and vdagentd.c
and in both cases the args are the same
(vdagentd_messages, VDAGENTD_NO_MESSAGES).

Add debug_print_message_header().
Signed-off-by: default avatarJakub Janků <jjanku@redhat.com>
Acked-by: Victor Toso's avatarVictor Toso <victortoso@redhat.com>
parent 8df6120b
Pipeline #4628 passed with stage
in 3 minutes and 28 seconds
......@@ -34,6 +34,7 @@
#include <glib.h>
#include <glib-unix.h>
#include "udscs.h"
#include "vdagentd-proto-strings.h"
struct udscs_buf {
uint8_t *buf;
......@@ -45,8 +46,6 @@ struct udscs_buf {
struct udscs_connection {
int fd;
const char * const *type_to_string;
int no_types;
int debug;
void *user_data;
#ifndef UDSCS_NO_SERVER
......@@ -78,18 +77,32 @@ static gboolean udscs_io_channel_cb(GIOChannel *source,
GIOCondition condition,
gpointer data);
static void debug_print_message_header(struct udscs_connection *conn,
struct udscs_message_header *header,
const gchar *direction)
{
const gchar *type = "invalid message";
if (conn == NULL || conn->debug == FALSE)
return;
if (header->type < G_N_ELEMENTS(vdagentd_messages))
type = vdagentd_messages[header->type];
syslog(LOG_DEBUG, "%p %s %s, arg1: %u, arg2: %u, size %u",
conn, direction, type, header->arg1, header->arg2, header->size);
}
struct udscs_connection *udscs_connect(const char *socketname,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug)
int debug)
{
int c;
struct sockaddr_un address;
struct udscs_connection *conn;
conn = g_new0(struct udscs_connection, 1);
conn->type_to_string = type_to_string;
conn->no_types = no_types;
conn->debug = debug;
conn->fd = socket(PF_UNIX, SOCK_STREAM, 0);
......@@ -203,15 +216,7 @@ void udscs_write(struct udscs_connection *conn, uint32_t type, uint32_t arg1,
memcpy(new_wbuf->buf, &header, sizeof(header));
memcpy(new_wbuf->buf + sizeof(header), data, size);
if (conn->debug) {
if (type < conn->no_types)
syslog(LOG_DEBUG, "%p sent %s, arg1: %u, arg2: %u, size %u",
conn, conn->type_to_string[type], arg1, arg2, size);
else
syslog(LOG_DEBUG,
"%p sent invalid message %u, arg1: %u, arg2: %u, size %u",
conn, type, arg1, arg2, size);
}
debug_print_message_header(conn, &header, "sent");
if (conn->io_channel && conn->write_watch_id == 0)
conn->write_watch_id =
......@@ -238,18 +243,7 @@ static void udscs_read_complete(struct udscs_connection **connp)
{
struct udscs_connection *conn = *connp;
if (conn->debug) {
if (conn->header.type < conn->no_types)
syslog(LOG_DEBUG,
"%p received %s, arg1: %u, arg2: %u, size %u",
conn, conn->type_to_string[conn->header.type],
conn->header.arg1, conn->header.arg2, conn->header.size);
else
syslog(LOG_DEBUG,
"%p received invalid message %u, arg1: %u, arg2: %u, size %u",
conn, conn->header.type, conn->header.arg1, conn->header.arg2,
conn->header.size);
}
debug_print_message_header(conn, &conn->header, "received");
if (conn->read_callback) {
conn->read_callback(connp, &conn->header, conn->data.buf);
......@@ -373,8 +367,6 @@ static gboolean udscs_io_channel_cb(GIOChannel *source,
struct udscs_server {
int fd;
const char * const *type_to_string;
int no_types;
int debug;
struct udscs_connection connections_head;
udscs_connect_callback connect_callback;
......@@ -386,7 +378,7 @@ struct udscs_server *udscs_create_server_for_fd(int fd,
udscs_connect_callback connect_callback,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug)
int debug)
{
struct udscs_server *server;
......@@ -396,8 +388,6 @@ struct udscs_server *udscs_create_server_for_fd(int fd,
}
server = g_new0(struct udscs_server, 1);
server->type_to_string = type_to_string;
server->no_types = no_types;
server->debug = debug;
server->fd = fd;
server->connect_callback = connect_callback;
......@@ -411,7 +401,7 @@ struct udscs_server *udscs_create_server(const char *socketname,
udscs_connect_callback connect_callback,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug)
int debug)
{
int c;
int fd;
......@@ -441,8 +431,7 @@ struct udscs_server *udscs_create_server(const char *socketname,
}
server = udscs_create_server_for_fd(fd, connect_callback, read_callback,
disconnect_callback, type_to_string,
no_types, debug);
disconnect_callback, debug);
if (!server) {
close(fd);
......@@ -489,8 +478,6 @@ static void udscs_server_accept(struct udscs_server *server) {
new_conn = g_new0(struct udscs_connection, 1);
new_conn->fd = fd;
new_conn->type_to_string = server->type_to_string;
new_conn->no_types = server->no_types;
new_conn->debug = server->debug;
new_conn->read_callback = server->read_callback;
new_conn->disconnect_callback = server->disconnect_callback;
......
......@@ -61,15 +61,12 @@ typedef void (*udscs_disconnect_callback)(struct udscs_connection *conn);
* Only sockets bound to a pathname are supported.
*
* If debug is true then the events on this connection will be traced.
* This includes the incoming and outgoing message names. So when debug is true
* no_types must be set to the value of the highest valid message id + 1,
* and type_to_string must point to a string array of size no_types for
* converting the message ids to their names.
* This includes the incoming and outgoing message names.
*/
struct udscs_connection *udscs_connect(const char *socketname,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug);
int debug);
/* Close the connection, releases the corresponding resources and
* sets *connp to NULL.
......@@ -112,7 +109,7 @@ struct udscs_server *udscs_create_server_for_fd(int fd,
udscs_connect_callback connect_callback,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug);
int debug);
/* Create the unix domain socket specified by socketname and
* start listening on it.
......@@ -120,16 +117,13 @@ struct udscs_server *udscs_create_server_for_fd(int fd,
*
* If debug is true then the events on this socket and related individual
* connections will be traced.
* This includes the incoming and outgoing message names. So when debug is true
* no_types must be set to the value of the highest valid message id + 1,
* and type_to_string must point to a string array of size no_types for
* converting the message ids to their names.
* This includes the incoming and outgoing message names.
*/
struct udscs_server *udscs_create_server(const char *socketname,
udscs_connect_callback connect_callback,
udscs_read_callback read_callback,
udscs_disconnect_callback disconnect_callback,
const char * const type_to_string[], int no_types, int debug);
int debug);
/* Close all the server's connections and releases the corresponding
* resources.
......
......@@ -42,7 +42,6 @@
#include "udscs.h"
#include "vdagentd-proto.h"
#include "vdagentd-proto-strings.h"
#include "audio.h"
#include "x11.h"
#include "file-xfers.h"
......@@ -369,7 +368,7 @@ static gboolean vdagent_init_async_cb(gpointer user_data)
agent->conn = udscs_connect(vdagentd_socket,
daemon_read_complete, daemon_disconnect_cb,
vdagentd_messages, VDAGENTD_NO_MESSAGES, debug);
debug);
if (agent->conn == NULL) {
g_timeout_add_seconds(1, vdagent_init_async_cb, agent);
return G_SOURCE_REMOVE;
......
......@@ -42,7 +42,6 @@
#include "udscs.h"
#include "vdagentd-proto.h"
#include "vdagentd-proto-strings.h"
#include "uinput.h"
#include "xorg-conf.h"
#include "virtio-port.h"
......@@ -1139,8 +1138,7 @@ int main(int argc, char *argv[])
server = udscs_create_server_for_fd(SD_LISTEN_FDS_START, agent_connect,
agent_read_complete,
agent_disconnect,
vdagentd_messages,
VDAGENTD_NO_MESSAGES, debug);
debug);
own_socket = FALSE;
} else
/* systemd socket activation not enabled, create our own */
......@@ -1148,7 +1146,6 @@ int main(int argc, char *argv[])
{
server = udscs_create_server(vdagentd_socket, agent_connect,
agent_read_complete, agent_disconnect,
vdagentd_messages, VDAGENTD_NO_MESSAGES,
debug);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment