aboutsummaryrefslogtreecommitdiff
path: root/misc.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2011-07-20 12:20:18 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2011-07-23 10:19:50 -0500
commit68a340053c766490b3c7460e543aebcc4bee4efa (patch)
treee8a4e80e36569cb2bc6047f048c54a46a6a5f3ed /misc.c
parentaf35375b6d600cf553f0d0748b2a10ff7dbf6142 (diff)
downloadslirp-68a340053c766490b3c7460e543aebcc4bee4efa.zip
slirp-68a340053c766490b3c7460e543aebcc4bee4efa.tar.gz
slirp-68a340053c766490b3c7460e543aebcc4bee4efa.tar.bz2
slirp: Forward ICMP echo requests via unprivileged socketsv0.15.0-rc0
Linux 3.0 gained support for unprivileged ICMP ping sockets. Use this feature to forward guest pings to the outer world. The host admin has to set the ping_group_range in order to grant access to those sockets. To allow ping for the users group (GID 100): echo 100 100 > /proc/sys/net/ipv4/ping_group_range Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'misc.c')
-rw-r--r--misc.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/misc.c b/misc.c
index a3643fd..a24d2cb 100644
--- a/misc.c
+++ b/misc.c
@@ -392,4 +392,17 @@ void slirp_connection_info(Slirp *slirp, Monitor *mon)
monitor_printf(mon, "%15s %5d %5d %5d\n", inet_ntoa(dst_addr),
ntohs(dst_port), so->so_rcv.sb_cc, so->so_snd.sb_cc);
}
+
+ for (so = slirp->icmp.so_next; so != &slirp->icmp; so = so->so_next) {
+ n = snprintf(buf, sizeof(buf), " ICMP[%d sec]",
+ (so->so_expire - curtime) / 1000);
+ src.sin_addr = so->so_laddr;
+ dst_addr = so->so_faddr;
+ memset(&buf[n], ' ', 19 - n);
+ buf[19] = 0;
+ monitor_printf(mon, "%s %3d %15s - ", buf, so->s,
+ src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*");
+ monitor_printf(mon, "%15s - %5d %5d\n", inet_ntoa(dst_addr),
+ so->so_rcv.sb_cc, so->so_snd.sb_cc);
+ }
}