donglingsai2880 2017-06-08 14:49
浏览 56

去组播(特别是ospf)

I'm trying to listen for OSPFv2 Hello messages as follows:

    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
", hdr)
                    } else {
                            // ignore/discard
                            fmt.Printf("Received packet from: %v to %v
", src, cm.Dst)
                            continue
                    }
            } else {
                    fmt.Printf("Not mcast
")
            }
    }

but I can only see locally generated OSPF messages (ie. from OSPF process on local machine). I can't see any OSPF packets coming from remote machines (I can see them with tcpdump though). Any ideas what's wrong with the code above? Why I can only see local Hellos and not remote...?

  • 写回答

1条回答 默认 最新

  • dqiatvbi61502 2017-06-08 20:02
    关注

    Problem solved. The code is OK - the "problem" is red hat and it's firewalld...

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并