Hello,

I am a Google Summer of Code student working on mtund, aka Magic
Tunnel Daemon aka Super Tunnel Daemon,
http://wiki.freebsd.org/SuperTunnelDaemon.

For mtund it would be useful to tunnel in ICMP echo request/reply
pairs. For this being able to receive ICMP echo requests in the user
space would be helpful. Currently, ICMP echo requests are processed in
the kernel where an ICMP echo reply is generated, but they are not
passed to the user space. I would suggest the patch below, adding a
sysctl variable net.inet.icmp.echo_user, allowing to recevie the ICMP
echo requests in the user space on a raw IP/ICMP socket rather than
having the kernel generate a reply to them.

Matus

patch:
Index: ip_icmp.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_icmp.c,v
retrieving revision 1.117
diff -d -u -r1.117 ip_icmp.c
--- ip_icmp.c   19 Jul 2007 22:34:25 -0000      1.117
+++ ip_icmp.c   6 Sep 2007 21:26:08 -0000
@@ -124,6 +124,10 @@
 SYSCTL_INT(_net_inet_icmp, OID_AUTO, bmcastecho, CTLFLAG_RW,
        &icmpbmcastecho, 0, "");
 
+static int     icmpechouser = 0;
+SYSCTL_INT(_net_inet_icmp, OID_AUTO, echo_user, CTLFLAG_RW | CTLFLAG_SECURE,
+        &icmpechouser, 0, "Pass ICMP echo requests to userspace rather than"
+       "replying to them in the kernel");
 
 #ifdef ICMPPRINTFS
 int    icmpprintfs = 0;
@@ -454,6 +458,9 @@
                break;
 
        case ICMP_ECHO:
+               if (icmpechouser)
+                       goto raw;
+
                if (!icmpbmcastecho
                    && (m->m_flags & (M_MCAST | M_BCAST)) != 0) {
                        icmpstat.icps_bmcastecho++;

Attachment: pgp4A2YLPDjQo.pgp
Description: PGP signature

Reply via email to