#include "reject.h"
#include "whowas.h"
#include "irc_radixtree.h"
+#include "sslproc.h"
-static int m_stats (struct Client *, struct Client *, int, const char **);
+static int m_stats (struct MsgBuf *, struct Client *, struct Client *, int, const char **);
struct Message stats_msgtab = {
- "STATS", 0, 0, 0, MFLG_SLOW,
+ "STATS", 0, 0, 0, 0,
{mg_unreg, {m_stats, 2}, {m_stats, 3}, mg_ignore, mg_ignore, {m_stats, 2}}
};
static void stats_ports(struct Client *);
static void stats_tresv(struct Client *);
static void stats_resv(struct Client *);
+static void stats_ssld(struct Client *);
static void stats_usage(struct Client *);
static void stats_tstats(struct Client *);
static void stats_uptime(struct Client *);
{'Q', stats_resv, 1, 0, },
{'r', stats_usage, 1, 0, },
{'R', stats_usage, 1, 0, },
+ {'s', stats_ssld, 1, 1, },
+ {'S', stats_ssld, 1, 1, },
{'t', stats_tstats, 1, 0, },
{'T', stats_tstats, 1, 0, },
{'u', stats_uptime, 0, 0, },
* if found execute it.
*/
static int
-m_stats(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+m_stats(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
static time_t last_used = 0;
int i;
}
}
+static void
+stats_ssld_foreach(void *data, pid_t pid, int cli_count, enum ssld_status status)
+{
+ struct Client *source_p = data;
+
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,
+ "S :%u %c %u",
+ pid,
+ status == SSLD_DEAD ? 'D' : (status == SSLD_SHUTDOWN ? 'S' : 'A'),
+ cli_count);
+}
+
+static void
+stats_ssld(struct Client *source_p)
+{
+#if 0
+ ssld_foreach_info(stats_ssld_foreach, source_p);
+#endif
+}
+
static void
stats_usage (struct Client *source_p)
{
size_t total_memory = 0;
- count_whowas_memory(&ww, &wwm);
+ whowas_memory_usage(&ww, &wwm);
RB_DLINK_FOREACH(ptr, global_client_list.head)
{