diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2011-07-20 12:20:18 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-07-23 10:19:50 -0500 |
commit | 68a340053c766490b3c7460e543aebcc4bee4efa (patch) | |
tree | e8a4e80e36569cb2bc6047f048c54a46a6a5f3ed /misc.c | |
parent | af35375b6d600cf553f0d0748b2a10ff7dbf6142 (diff) | |
download | slirp-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.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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); + } } |