in internal/tcp/tcp.go [128:145]
func parsePktIP(pkt gopacket.Packet) (net.IP, ip.DSCPValue, error) {
switch pkt.NetworkLayer().LayerType() {
case layers.LayerTypeIPv4:
layer := pkt.Layer(layers.LayerTypeIPv4).(*layers.IPv4)
if layer == nil {
return net.IPv4zero, ip.DSCPValue(0), errors.New("layer type IPv4 invalid")
}
return layer.SrcIP, ip.DSCPValue(layer.TOS), nil
case layers.LayerTypeIPv6:
layer := pkt.Layer(layers.LayerTypeIPv6).(*layers.IPv6)
if layer == nil {
return net.IPv6zero, ip.DSCPValue(0), errors.New("layer type IPv6 invalid")
}
return layer.SrcIP, ip.DSCPValue(layer.TrafficClass), nil
}
return net.IPv4zero, ip.DSCPValue(0), errors.New("unknown network layer type")
}