From 68e94a0780098e8b5e4772a270f91a60a370b8f6 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 14 Mar 2012 10:08:51 +0100 Subject: pingu_adm: new admin command for dumping active pings --- pingu_ping.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'pingu_ping.c') diff --git a/pingu_ping.c b/pingu_ping.c index 8ef0596..186673e 100644 --- a/pingu_ping.c +++ b/pingu_ping.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -7,6 +8,7 @@ #include #include +#include #include #include @@ -74,7 +76,7 @@ static struct pingu_ping *pingu_ping_find(struct icmphdr *icp, struct pingu_ping *ping; if (icp->type != ICMP_ECHOREPLY || icp->un.echo.id != getpid()) return NULL; - + list_for_each_entry(ping, ping_list, ping_list_entry) { if (sockaddr_cmp(&ping->host->burst.saddr, from) == 0 && ping->seq == ntohs(icp->un.echo.sequence)) @@ -142,3 +144,14 @@ void pingu_ping_cleanup(struct ev_loop *loop, struct list_head *ping_list) pingu_ping_free(loop, ping); } } + +void pingu_ping_dump(int fd, struct list_head *ping_list, const char *prefix) +{ + struct pingu_ping *ping; + char str[IF_NAMESIZE + 80]; + list_for_each_entry(ping, ping_list, ping_list_entry) { + snprintf(str, sizeof(str), "%s %s %i\n", + prefix, ping->host->host, ping->seq); + write(fd, str, strlen(str)); + } +} -- cgit v1.2.3