使用 IP_ADD_SOURCE_MEMBERSHIP 无法为 RAW 套接字添加超过 10 个源地址
嗨,
我使用设置套接字选项 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 个源地址后出现错误 Can't set IP_ADD_SOURCE_MEMBERSHIP!。
预先感
谢德布约蒂
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来您已经达到了内核限制。
中配置的值
检查/proc/sys/net/ipv4/igmp_max_msf
并根据需要进行调整。例如:
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: