func decodeIPv4(data []byte, p gopacket.PacketBuilder) error { ip := &IPv4{} err := ip.DecodeFromBytes(data, p) p.AddLayer(ip) p.SetNetworkLayer(ip) if err != nil { return err } return p.NextDecoder(ip.NextLayerType()) }
func decodeIPv6(data []byte, p gopacket.PacketBuilder) error { ip6 := &IPv6{} err := ip6.DecodeFromBytes(data, p) p.AddLayer(ip6) p.SetNetworkLayer(ip6) if ip6.HopByHop != nil { // TODO(gconnell): Since HopByHop is now an integral part of the IPv6 // layer, should it actually be added as its own layer? I'm leaning towards // no. p.AddLayer(ip6.HopByHop) } if err != nil { return err } if ip6.HopByHop != nil { return p.NextDecoder(ip6.HopByHop.NextHeader) } return p.NextDecoder(ip6.NextHeader) }