func (icmp *Icmp) ProcessICMPv6( flowID *flows.FlowID, icmp6 *layers.ICMPv6, pkt *protos.Packet, ) { typ := uint8(icmp6.TypeCode >> 8) code := uint8(icmp6.TypeCode) id, seq := extractTrackingData(6, typ, &icmp6.BaseLayer) tuple := &icmpTuple{ IcmpVersion: 6, SrcIp: pkt.Tuple.Src_ip, DstIp: pkt.Tuple.Dst_ip, Id: id, Seq: seq, } msg := &icmpMessage{ Ts: pkt.Ts, Type: typ, Code: code, Length: len(icmp6.BaseLayer.Payload), } if isRequest(tuple, msg) { if flowID != nil { flowID.AddICMPv6Request(id) } icmp.processRequest(tuple, msg) } else { if flowID != nil { flowID.AddICMPv6Response(id) } icmp.processResponse(tuple, msg) } }