gpt4 book ai didi

去和多播(特别是 ospf)

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:01 26 4
gpt4 key购买 nike

我正尝试按如下方式收听 OSPFv2 Hello 消息:

    ens192, err := net.InterfaceByName("ens192")
if err != nil {
return err
}
c, err := net.ListenPacket("ip4:89", "0.0.0.0") // ipv4 proto 89, all local interfaces
if err != nil {
return err
}
defer c.Close()

p := ipv4.NewPacketConn(c)
if err != nil {
return err
}

allSPFRouters := net.ParseIP("224.0.0.5")
if err := p.JoinGroup(ens192, &net.IPAddr{IP: allSPFRouters}); err != nil {
return err
}

if err := p.SetControlMessage(ipv4.FlagDst|ipv4.FlagSrc|ipv4.FlagInterface, true); err != nil {
return err
}

b := make([]byte, 8192)
for {
n, cm, src, err := p.ReadFrom(b)
_ = n
if err != nil {
return err
}
if cm.Dst.IsMulticast() {
if cm.Dst.Equal(allSPFRouters) {
hdr := &ospfHeader{}
hdr.Decode(b)
fmt.Printf("%s\n", hdr)
} else {
// ignore/discard
fmt.Printf("Received packet from: %v to %v\n", src, cm.Dst)
continue
}
} else {
fmt.Printf("Not mcast\n")
}
}

但我只能看到本地生成的 OSPF 消息(即来自本地计算机上的 OSPF 进程)。我看不到任何来自远程机器的 OSPF 数据包(不过我可以使用 tcpdump 看到它们)。任何想法上面的代码有什么问题?为什么我只能看到本地 Hello 而看不到远程...?

最佳答案

问题解决了。代码没问题——“问题”是 red hat 和 firewalld...

关于去和多播(特别是 ospf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com