From owner-freebsd-net@FreeBSD.ORG Sun Sep 9 20:23:56 2007 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF18416A417 for ; Sun, 9 Sep 2007 20:23:56 +0000 (UTC) (envelope-from matus.harvan@inf.ethz.ch) Received: from XSMTP0.ethz.ch (xsmtp0.ethz.ch [82.130.70.14]) by mx1.freebsd.org (Postfix) with ESMTP id 4B6BC13C4A6 for ; Sun, 9 Sep 2007 20:23:56 +0000 (UTC) (envelope-from matus.harvan@inf.ethz.ch) Received: from xfe2.d.ethz.ch ([82.130.124.42]) by XSMTP0.ethz.ch with Microsoft SMTPSVC(6.0.3790.3959); Sun, 9 Sep 2007 22:11:50 +0200 Received: from bike-planet.inf.ethz.ch ([80.218.230.225]) by xfe2.d.ethz.ch over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Sun, 9 Sep 2007 22:11:50 +0200 Received: by bike-planet.inf.ethz.ch (Postfix, from userid 1001) id 5C8981D212B; Sun, 9 Sep 2007 22:11:53 +0200 (CEST) Date: Sun, 9 Sep 2007 22:11:52 +0200 From: Matus Harvan To: freebsd-net@freebsd.org Message-ID: <20070909201152.GA18039@inf.ethz.ch> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="azLHFNyN32YCQGCU" Content-Disposition: inline User-Agent: Mutt/1.4.2.3i X-OriginalArrivalTime: 09 Sep 2007 20:11:50.0169 (UTC) FILETIME=[A8029090:01C7F31D] Cc: Max Laier , Brooks Davis , mharvan@inf.ethz.ch Subject: icmp echo_user X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Sep 2007 20:23:56 -0000 --azLHFNyN32YCQGCU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 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, ""); =20 +static int icmpechouser =3D 0; +SYSCTL_INT(_net_inet_icmp, OID_AUTO, echo_user, CTLFLAG_RW | CTLFLAG_SECUR= E, + &icmpechouser, 0, "Pass ICMP echo requests to userspace rather tha= n" + "replying to them in the kernel"); =20 #ifdef ICMPPRINTFS int icmpprintfs =3D 0; @@ -454,6 +458,9 @@ break; =20 case ICMP_ECHO: + if (icmpechouser) + goto raw; + if (!icmpbmcastecho && (m->m_flags & (M_MCAST | M_BCAST)) !=3D 0) { icmpstat.icps_bmcastecho++; --azLHFNyN32YCQGCU Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4 (FreeBSD) iD8DBQFG5FOI43LQWDWf0QIRAiQyAJ9PvtTv2OxaBPpZRum6M2PSC0KkkwCbBt48 YHpjkNJzXpS541oC/r58pCw= =WGkU -----END PGP SIGNATURE----- --azLHFNyN32YCQGCU--