Having DSS compiles on Solaris 10 [part 7] - DSS and Multicast streams
juil 16th, 2007 by Prune
I finaly got DSS working fine on Solaris, with Multicast source on non primary interface.
This modified source-tree should be working with most Solaris 10 and maybe 8, 9, on Sparc or Intel. Just untar it, do a “./buildtarball myversion” and use the tar.gz file for install. You may also need the Install script I modified to install in /opt/deflector/dss. I hope to find time to have the install dir on the command line so anybody can use it.
You will see a new parameter in streamingserver.xml where you define the IP you wish to subscribe Multicast streams on : <PREF NAME=”ip_listen_for_multicast” >0</PREF>
This parameter is set to 0 by default, which means a default behaviour, using INADDR_ANY as subscription IP. You can set it to an IP on your host to subscribe to a special interface like :
<PREF NAME=”ip_listen_for_multicast” >10.16.240.19</PREF>
It seems another solution would be to change the multicast lan route. Lets say your primary inteface have IP 10.16.248.19 and you have multicast comming to another interface whose IP is 10.16.240.19. You do it like this :
route -n delete -interface 224.0/4 -gateway 10.16.248.19
route -n add -interface 224.0/4 -gateway 10.16.240.19
My patch is not a end by itself as this IP should be, at least, be set per multicast stream. It’s just OK for my need, my lack of time and my small C++ experience.
Just come to me if you want to have more details about the config files or start/stop script.
By the way, the .tar.gz file with patched source is here and a patch file (diff file to apply using gpatch on Solaris) for the original source code is here
I know it’s not a huge problem (as you point out), but I rewrote OS::GetNumProcessors (for Solaris) to use the sysconf() system call. This takes a selector parameter, asking to return the number of “online” processors. Returns 1 on an old-school SunFire v120 and 32 on a new SunFire T2000. Use it if you like and pass it on…
#if (__solaris__)
{
UInt32 numCPUs = sysconf(_SC_NPROCESSORS_ONLN);
if (numCPUs