上次曾经就这个问题发了一个帖子来询问, 可能是我说的不太清楚,所以也没有能得到什么回复.
现在我详细描述一下我的情况
我在做的是一个igmp proxy的程序, 这份code是从别的地方repot过来的, 而且看上去这份code是没有问题的. 大家都知道, 我们如果要发一个igmp 的report, 可以通过先建立一个socket, 然后通过setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&mreq, sizeof(mreq))), 这样来发出一个igmp的report报文.
现在的问题是, 我做完这个setsockopt之后, 首先函数没有返回错误, 那应该说明我这个函数的执行过程中没有出错, 也就是产生了这个包, 然后这个包应该就要往外发出了, 但最终这个包并没有从接口发出去. 由于我不清楚, 在setsockopt之后, 这个包究竟经历了哪些流程, 所以很难查找问题的所在.
从iptales来看, 在OUTPUT还是能看到这个包被收到了, 但是只收到了一个, 如果你发了n个, 也是只收到一个, 看上去是之后同样的包在这之前就被丢掉了, 同时没有一个包到达了POSTROUTING,
不知道有没有人了解igmp的report报文在setsockopt产生之后, 经历了哪些地方, 或者提供一些线索, 非常感谢
[ 本帖最后由 kobefly 于 2006-6-7 17:36 编辑 ] |