func parsePktIP()

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