Q:

using IP_ADD_SOURCE_MEMBERSHIP unable to add more then 10 source address for a RAW socket

HI,
I use set socket option IP_ADD_SOURCE_MEMBERSHIP to add more then 10 source address. But after 10 source address I am unable to add further. Can anyone tell me how can add more then 10 address per socket. My code is as follows,
sock = socket (AF_INET, SOCK_RAW, IPPROTO_UDP);
/* The below code repeted for more then 10 times */
struct ip_mreq_source  mc_req;

mc_req.imr_multiaddr.s_addr   = grpaddr;
mc_req.imr_interface.s_addr   = ifaddr;
mc_req.imr_sourceaddr.s_addr  = srcaddr;

if ((setsockopt (sock, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
                 (void*) &mc_req,
                 sizeof (mc_req))) < 0)
{
    printf ("Can't set  IP_ADD_SOURCE_MEMBERSHIP!\n");
    exit (1);
}

After adding 10 source address Error comes as Can't set  IP_ADD_SOURCE_MEMBERSHIP!.
Thanks in advance 
Debjyoti

A:

That looks like you're hitting a kernel limit.
Check the value configured in:
/proc/sys/net/ipv4/igmp_max_msf
and adjust it as needed. For example:
echo 20 > /proc/sys/net/ipv4/igmp_max_msf

