2017-06-08 1 views
0

Ich versuche, für OSPFv2 Hallo-Nachrichten zu hören, wie folgt:gehen und Multicast-OSPF (speziell)

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") 
      } 
    } 

aber ich kann nur OSPF-Nachrichten siehe lokal erzeugen (dh von OSPF-Prozess auf dem lokalen Rechner.). Ich kann keine OSPF-Pakete von entfernten Rechnern sehen (ich kann sie jedoch mit tcpdump sehen). Irgendwelche Ideen, was mit dem obigen Code nicht stimmt? Warum kann ich nur lokale Hellos sehen und nicht entfernt ...?

Antwort

0

Problem gelöst. Der Code ist OK - das "Problem" ist roter Hut und es ist feuerswalld ...

Verwandte Themen