systemctl: show connection counters only for Accept=yes sockets
authorLennart Poettering <lennart@poettering.net>
Fri, 9 Jul 2010 22:55:44 +0000 (00:55 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 9 Jul 2010 22:55:44 +0000 (00:55 +0200)
fixme
src/systemctl.c

diff --git a/fixme b/fixme
index 37c6288..cd5a23f 100644 (file)
--- a/fixme
+++ b/fixme
@@ -39,8 +39,6 @@
 
 * pull in umount.target and shutdown.target from emergency.service (?)
 
-* Don't show Accepted/Connected for non-Accept sockets
-
 * Show exit status auf auxiliary programs in systemctl status
 
 External:
index 0314337..dc6fb5e 100644 (file)
@@ -947,6 +947,7 @@ typedef struct UnitStatusInfo {
         /* Socket */
         unsigned n_accepted;
         unsigned n_connections;
+        bool accept;
 
         /* Device */
         const char *sysfs_path;
@@ -997,7 +998,7 @@ static void print_status_info(UnitStatusInfo *i) {
         if (i->status_text)
                 printf("\t  Status: \"%s\"\n", i->status_text);
 
-        if (i->id && endswith(i->id, ".socket"))
+        if (i->accept)
                 printf("\tAccepted: %u; Connected: %u\n", i->n_accepted, i->n_connections);
 
         if (i->main_pid > 0 || i->control_pid > 0) {
@@ -1093,6 +1094,17 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn
                 break;
         }
 
+        case DBUS_TYPE_BOOLEAN: {
+                dbus_bool_t b;
+
+                dbus_message_iter_get_basic(iter, &b);
+
+                if (streq(name, "Accept"))
+                        i->accept = b;
+
+                break;
+        }
+
         case DBUS_TYPE_UINT32: {
                 uint32_t u;