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>
