在Go中读取所有组播ICMPv6数据包

时间:2016-09-10 11:28:21

标签: go network-programming ipv6 multicast

使用net.PacketConn时,似乎没有办法读取发往本地主机的多播数据包

我尝试使用x/net/ipv6,如下所示:

var c net.PacketConn
c, err = net.ListenPacket("ip6:ipv6-icmp", ifaceIP.String())
...
p := ipv6.NewPacketConn(c)
err = p.SetControlMessage(ipv6.FlagSrc|ipv6.FlagDst, true)
...
var f ipv6.ICMPFilter
f.SetAll(true)
f.Accept(ipv6.ICMPTypeNeighborSolicitation)
f.Accept(ipv6.ICMPTypeNeighborAdvertisement)
err = p.SetICMPFilter(&f)
...
payload := make([]byte, snaplen)
i, rcm, src, err := p.ReadFrom(payload)
...

我想阅读,例如,IPv6邻居请求,其中目标请求节点多播地址不属于本地主机。

可以使用标准的lib(即不使用pcap库)吗?

0 个答案:

没有答案