Hello Ross,<div><br></div><div>I have done some investigation on this issue and here are the results and suggestions. </div><div><br></div><div>1. You were right, it works on  freeBSD , but see 2. </div><div><br></div><div>

2. This is not a Linux bug, but intended behavior. making 1. an exception due to how multicast is implemented (different) in freeBSD.</div><div><br></div><div>Here is why:</div><div>We know that one should not bind() to a multicast address, but according to the kernel developers and other multicast developers this is intended in case you want to receive only from one address and port and not all. It depends on whats needed, so no bug..</div>

<div>. </div><div><div><a href="http://jungla.dit.upm.es/~jmseyas/linux/mcast.lj/mcast-lj.html">http://jungla.dit.upm.es/~jmseyas/linux/mcast.lj/mcast-lj.html</a> (shows a bind is required)</div><div><a href="http://marc.info/?l=linux-netdev&amp;m=121579883022264&amp;w=2">http://marc.info/?l=linux-netdev&amp;m=121579883022264&amp;w=2</a></div>

<div><a href="http://marc.info/?l=linux-netdev&amp;m=121580189427089&amp;w=2">http://marc.info/?l=linux-netdev&amp;m=121580189427089&amp;w=2</a></div></div><div><br></div><div>In short if you join a group with IN_ADDRANY, the indended behavior is you that you DO get all multicast groups sending on the same port, which is the case in Live. </div>

<div><br></div><div>If you do want to receive only packets from a specific address and port, you must not use IN_ADDRANY and  you should bind() the socket to the required multicast address to receive packets only from this address /port/</div>

<div><br></div><div>All this is reported as intended behavior and the reason there is no FIX in the linux kernel</div><div>The above documents and discussion explain it. </div><div><br></div><div>Here is what linux net dev team has to say about the reported &quot;bug&quot;.</div>

<div><br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

That&#39;s how it has always worked in the original socket implementation (BSD) and derivatives. The control for socket reception is the binding, so if you want only mcast X packets, you need to bind to X. If you bind to INADDR_ANY, that *means* you don&#39;t care what the destination address is and you&#39;ll receive all unicast and multicast packets with a matching port and protocol.</blockquote>

<div><br></div><div>The above explains why the Linux patch has been declined.</div><div><br></div><div>I hope you can add support for this in live as I believe both are valid uses cases.</div><div><br></div><div>I also hope that my research on the matter helps and shows that its not a linux bug or a live bug but a case that live does not currently handle, (A) not bindng and using INADDR_ANY </div>

<div>Some apps take advantage of this for messaging for example, in my case and I believe in most live555 cases its actually the opposite that we need. </div><div><br></div><div>Thank You, </div><div>looking forward to resolving this scenario in live555. Its a great library. </div>

<div><br></div><div>Zed.</div><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Sun, Sep 19, 2010 at 3:12 PM, Ross Finlayson <span dir="ltr">&lt;<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">If your application is receiving - on a socket - traffic that was sent to a multicast address that that socket did not subscribe to, then that is definitely a problem with the operating system, not with your application, and not with our libraries.<br>


<br>
Because you say that you are unwilling to change your operating system[*], and because you say that you can&#39;t stop your incoming traffic (for different multicast addresses) from using distinct port numbers, then there&#39;s no help that I can give you.  Sorry.<br>


<br>
[*] Note that FreeBSD - as far as I can tell - does not appear to have this problem.  If I were you, I&#39;d try using FreeBSD instead of Linux.<br>
-- <br><font color="#888888">
<br>
Ross Finlayson<br>
Live Networks, Inc.<br>
<a href="http://www.live555.com/" target="_blank">http://www.live555.com/</a><br>
_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com" target="_blank">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" target="_blank">http://lists.live555.com/mailman/listinfo/live-devel</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Zdenek Bouresh<br>NextStream LTD.<br><br>The information contained within this email transmission and any attachments is confidential and intended solely for the attention and use of the named individual addressee(s) or entity. It may not be legally revealed or be disclosed to any other person or third party without the express authority (prior written approval) of NextStream LTD and/or the original recipient, or the intended recipients, or both. If you are not the intended recipient, you must not disclose, copy, distribute, print, rely on or retain this message or any part of it. The information contained within is strictly prohibited. If you have received this email in error please notify the sender by reply, and delete this message from your email system(s). Any hard copies must also be destroyed.<br>


</div>