From f8e6fb5674a0eb77090995459d5b36dd898fa787 Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Sun, 21 Nov 1999 18:46:36 +0000 Subject: [PATCH] Implement GLIBTOP_CMND_INTERFACE_NAMES. --- src/daemon/main.c | 19 +++++++++++++++++++ src/daemon/slave.c | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/daemon/main.c b/src/daemon/main.c index 2355dfbd..7ef7af10 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -46,6 +46,10 @@ handle_parent_connection (int s) pid_t pid; void *ptr; + u_int64_t interface G_GNUC_UNUSED; + u_int64_t number G_GNUC_UNUSED; + u_int64_t strategy G_GNUC_UNUSED; + glibtop_send_version (glibtop_global_server, s); if (verbose_output) @@ -232,6 +236,21 @@ handle_parent_connection (int s) do_output (s, resp, _offset_data (netload), 0, NULL, retval); break; + case GLIBTOP_CMND_INTERFACE_NAMES: + memcpy (&interface, parameter, sizeof (u_int64_t)); + memcpy (&number, parameter + sizeof (u_int64_t), + sizeof (u_int64_t)); + memcpy (&strategy, parameter + 2 * sizeof (u_int64_t), + sizeof (u_int64_t)); + ptr = glibtop_get_interface_names_l (server, + &resp->u.data.interface_names, + interface, number, strategy); + do_output (s, resp, _offset_data (interface_names), + ptr ? resp->u.data.interface_names.size+1 : 0, ptr, + (ptr != NULL) ? 0 : -1); + glibtop_free_r (server, ptr); + break; + default: syslog_message (LOG_ERR, "Parent received unknown command %u.", cmnd->command); diff --git a/src/daemon/slave.c b/src/daemon/slave.c index cc7ecb7a..f25adebc 100644 --- a/src/daemon/slave.c +++ b/src/daemon/slave.c @@ -31,6 +31,10 @@ handle_slave_connection (int input, int output) const void *ptr G_GNUC_UNUSED; int ret G_GNUC_UNUSED = -1; + u_int64_t interface G_GNUC_UNUSED; + u_int64_t number G_GNUC_UNUSED; + u_int64_t strategy G_GNUC_UNUSED; + unsigned short max_len G_GNUC_UNUSED; pid_t pid G_GNUC_UNUSED; @@ -108,6 +112,22 @@ handle_slave_connection (int input, int output) ptr, (ptr != NULL) ? 0 : -1); glibtop_free_r (server, ptr); break; +#endif +#if GLIBTOP_SUID_INTERFACE_NAMES + case GLIBTOP_CMND_INTERFACE_NAMES: + memcpy (&interface, parameter, sizeof (u_int64_t)); + memcpy (&number, parameter + sizeof (u_int64_t), + sizeof (u_int64_t)); + memcpy (&strategy, parameter + 2 * sizeof (u_int64_t), + sizeof (u_int64_t)); + ptr = glibtop_get_proc_args_p + (server, &resp->u.data.interface_names, + interface, number, strategy); + do_output (output, resp, _offset_data (interface_names), + ptr ? resp->u.data.interface_names.size+1 : 0, + ptr, (ptr != NULL) ? 0 : -1); + glibtop_free_r (server, ptr); + break; #endif default: ret = handle_slave_command (cmnd, resp, parameter);