Hi,
I'm trying to capture OSPF hello packets like this:
ens192, err := net.InterfaceByName("ens192")
if err != nil {
return err
}
_ = ens192
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(nil, &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, 64)
for {
n, cm, src, err := p.ReadFrom(b)
_ = n
if err != nil {
return err
}
if cm.Dst.IsMulticast() {
if cm.Dst.Equal(allSPFRouters) {
fmt.Printf("OSPF hello received from %v\n",
src)
} else {
// ignore/discard
fmt.Printf("Received packet from: %v to
%v\n", src, cm.Dst)
continue
}
}
}
But I can only see locally generated traffic (ie. local ospf process)... I
can see anything coming from other OSPF neighbours (even though I can see
then when doing tcpdump on ens192)..
Any ideas?
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.