Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Oct 2007 17:31:28 +0200
From:      Matus Harvan <mharvan@inf.ethz.ch>
To:        freebsd-net@freebsd.org
Cc:        Max Laier <max@love2party.net>, Brooks Davis <brooks@freebsd.org>
Subject:   Re: icmp echo_user
Message-ID:  <20071026153128.GF1049@styx.ethz.ch>
In-Reply-To: <20070909201152.GA18039@inf.ethz.ch>
References:  <20070909201152.GA18039@inf.ethz.ch>

next in thread | previous in thread | raw e-mail | index | archive | help

--udcq9yAoWb9A4FsZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi,

I was wondering if I could get some feedback about the patch and
whether others think it could be committed.

Matus

On Sun, Sep 09, 2007 at 10:11:52PM +0200, Matus Harvan wrote:
> Hello,
>=20
> I am a Google Summer of Code student working on mtund, aka Magic
> Tunnel Daemon aka Super Tunnel Daemon,
> http://wiki.freebsd.org/SuperTunnelDaemon.
>=20
> 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.
>=20
> Matus
>=20
> 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_SEC=
URE,
> +        &icmpechouser, 0, "Pass ICMP echo requests to userspace rather t=
han"
> +	"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++;



--udcq9yAoWb9A4FsZ
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)

iD8DBQFHIghQ43LQWDWf0QIRAgC6AKCTCw86bh+Tv7Vfv6COXD13uQkq2gCggvK1
Ygf/tfXkHp7fmO1dKvD/4yw=
=JQbN
-----END PGP SIGNATURE-----

--udcq9yAoWb9A4FsZ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071026153128.GF1049>