本文整理匯總了Golang中github.com/elastic/beats/packetbeat/protos.Packet.Ts方法的典型用法代碼示例。如果您正苦於以下問題:Golang Packet.Ts方法的具體用法?Golang Packet.Ts怎麽用?Golang Packet.Ts使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/elastic/beats/packetbeat/protos.Packet
的用法示例。
在下文中一共展示了Packet.Ts方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: DecodePacketData
func (decoder *DecoderStruct) DecodePacketData(data []byte, ci *gopacket.CaptureInfo) {
var err error
var packet protos.Packet
err = decoder.Parser.DecodeLayers(data, &decoder.decoded)
if err != nil {
// Ignore UnsupportedLayerType errors that can occur while parsing
// UDP packets.
lastLayer := decoder.decoded[len(decoder.decoded)-1]
_, unsupported := err.(gopacket.UnsupportedLayerType)
if !(unsupported && lastLayer == layers.LayerTypeUDP) {
logp.Debug("pcapread", "Decoding error: %s", err)
return
}
}
has_icmp4 := false
has_icmp6 := false
has_tcp := false
has_udp := false
for _, layerType := range decoder.decoded {
switch layerType {
case layers.LayerTypeIPv4:
logp.Debug("ip", "IPv4 packet")
packet.Tuple.Src_ip = decoder.ip4.SrcIP
packet.Tuple.Dst_ip = decoder.ip4.DstIP
packet.Tuple.Ip_length = 4
case layers.LayerTypeIPv6:
logp.Debug("ip", "IPv6 packet")
packet.Tuple.Src_ip = decoder.ip6.SrcIP
packet.Tuple.Dst_ip = decoder.ip6.DstIP
packet.Tuple.Ip_length = 16
case layers.LayerTypeICMPv4:
logp.Debug("ip", "ICMPv4 packet")
has_icmp4 = true
case layers.LayerTypeICMPv6:
logp.Debug("ip", "ICMPv6 packet")
has_icmp6 = true
case layers.LayerTypeTCP:
logp.Debug("ip", "TCP packet")
packet.Tuple.Src_port = uint16(decoder.tcp.SrcPort)
packet.Tuple.Dst_port = uint16(decoder.tcp.DstPort)
has_tcp = true
case layers.LayerTypeUDP:
logp.Debug("ip", "UDP packet")
packet.Tuple.Src_port = uint16(decoder.udp.SrcPort)
packet.Tuple.Dst_port = uint16(decoder.udp.DstPort)
packet.Payload = decoder.udp.Payload
has_udp = true
case gopacket.LayerTypePayload:
packet.Payload = decoder.payload
}
}
packet.Ts = ci.Timestamp
packet.Tuple.ComputeHashebles()
if has_udp {
decoder.udpProc.Process(&packet)
} else if has_tcp {
if len(packet.Payload) == 0 && !decoder.tcp.FIN {
// We have no use for this atm.
logp.Debug("pcapread", "Ignore empty non-FIN packet")
return
}
decoder.tcpProc.Process(&decoder.tcp, &packet)
} else if has_icmp4 {
decoder.icmp4Proc.ProcessICMPv4(&decoder.icmp4, &packet)
} else if has_icmp6 {
decoder.icmp6Proc.ProcessICMPv6(&decoder.icmp6, &packet)
}
}