使用IP_ADD_SOURCE_MEMBERSHIP无法为RAW套接字添加超过10个源地址

时间:2011-01-10 09:03:01

标签: c linux igmp

HI,

我使用set socket选项IP_ADD_SOURCE_MEMBERSHIP添加超过10个源地址。但是在10个源地址后我无法进一步添加。任何人都可以告诉我如何为每个插槽添加超过10个地址。我的代码如下,

sock = socket(AF_INET,SOCK_RAW,IPPROTO_UDP);

/ *以下代码重复超过10次* /

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);
}

添加10个源地址后出现错误,因为无法设置IP_ADD_SOURCE_MEMBERSHIP!。

提前致谢

Debjyoti

1 个答案:

答案 0 :(得分:2)

看起来你正在达到内核限制。

检查以下配置的值:

的/ proc / SYS /净/的IPv4 / igmp_max_msf

并根据需要进行调整。例如:

echo 20 > /proc/sys/net/ipv4/igmp_max_msf