Date: Thu, 6 Jun 2002 15:03:28 -0700 From: "Crist J. Clark" <crist.clark@attbi.com> To: Vadim Egorov <egorovv@attbi.com> Cc: freebsd-net@FreeBSD.ORG Subject: Re: IP_MULTICAST_LOOP Message-ID: <20020606150328.G93321@blossom.cjclark.org> In-Reply-To: <86vg8wu5cw.fsf@my.egorovv.net>; from egorovv@attbi.com on Thu, Jun 06, 2002 at 02:24:47AM -0700 References: <86vg8wu5cw.fsf@my.egorovv.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 06, 2002 at 02:24:47AM -0700, Vadim Egorov wrote: > > Hi guys! > > I'm playing with multicasting (-stable), and I want to disable looping back > my outgoing packets setting IP_MULTICAST_LOOP option to 0 but it doen't > have any effect. My app is listening to the same group it is casting. > > After some grepping I came across some code in netinet/ip_output.c: > (imo == NULL || imo->imo_multicast_loop)) { > /* > * If we belong to the destination multicast group > * on the outgoing interface, and the caller did not > * forbid loopback, loop back a copy. > */ > > The comment says 'and' but the code says '||' -- looks like an error to me. > Except this I've got no idea what it means - does it make amy sence? The line you quote is only checking the "caller did not forbid loopback" portion. It evaluates true when no options are set (imo == NULL) or when the IP_MULTICAST_LOOP (imo->imo_multicast_loop) is non-zero. The first conditional is just defaulting to loopback when no options are present. The "and" part of the conditional was on the previous line. Here's the whole conditional, if (inm != NULL && (imo == NULL || imo->imo_multicast_loop)) { -- Crist J. Clark | cjclark@alum.mit.edu | cjclark@jhu.edu http://people.freebsd.org/~cjc/ | cjc@freebsd.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020606150328.G93321>