Linux获取组源地址igmpv3,Linux和IGMPv3上的多播加入

我们遇到了一个棘手的问题。我们正在编写一个接收组播UDP流量的C++程序。我们正在将应用程序迁移到不同的网络环境,我们的运营团队要求我们支持来自我们应用程序的IGMPv3会员通告。初步调查表明Linux 2.6内核支持IGMPv3。所以,我很困惑,当我们运行tcpdump的,我们看到下面的输出曲线:Linux和IGMPv3上的多播加入

[[email protected]]$ sudo /usr/sbin/tcpdump -i eth1.22 igmp

tcpdump: listening on eth1.22

00:20:09.007094 switch-a.stage > ALL-SYSTEMS.MCAST.NET: igmp query v2 [max resp time 20] [ttl 1]

00:20:09.241946 10.129.22.236 > 232.0.1.10: igmp v2 report 232.0.1.10 (DF) [tos 0xc0] [ttl 1]

00:20:10.472159 10.129.22.236 > 236.0.1.101: igmp v2 report 236.0.1.101 (DF) [tos 0xc0] [ttl 1]

44 packets received by filter

我的理解是一个可以强制内核通过指定一个非零值使用IGMP的较低版本文件/proc/sys/net/ipv4/conf/eth1.22/force_igmp_version;不过,我已确认该文件具有零值配置。

我们的应用程序使用下面的代码加入组播组:

... joinMulticast(in_addr mcast_addr, in_addr interface_addr)

{

struct ip_mreq mcast_req;

mcast_req.imr_multiaddr.s_addr = mcast_addr;

mcast_req.imr_interface.s_addr = interface_addr;

int err = setsockopt(fFileDesc, IPPROTO_IP, IP_ADD_MEMBERSHIP,

(char*)&theMulti, sizeof(theMulti));

// handle errors etc.

// ...

}

是否有额外的东西,我们需要在源程序强制IGMPv3的,包括?

2008-10-22

terson

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值