pkg/accesslog/events/detail.go (113 lines of code) (raw):

// Licensed to Apache Software Foundation (ASF) under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Apache Software Foundation (ASF) licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package events import ( "time" "github.com/apache/skywalking-rover/pkg/tools/btf" "github.com/apache/skywalking-rover/pkg/tools/buffer" "github.com/apache/skywalking-rover/pkg/tools/enums" "github.com/apache/skywalking-rover/pkg/tools/host" ) type SocketDetail interface { Event buffer.SocketDataDetail GetStartTime() uint64 GetEndTime() uint64 GetL4PackageCount() uint8 GetL4TotalPackageSize() uint64 GetFunctionName() enums.SocketFunctionName GetProtocol() enums.ConnectionProtocol GetSSL() uint8 } type SocketDetailEvent struct { ConnectionID uint64 RandomID uint64 DataID0 uint64 StartTime uint64 EndTime uint64 L4Duration uint32 L3Duration uint32 L3LocalDuration uint32 L3OutputDuration uint32 L3ResolveMacDuration uint32 L3NetFilterDuration uint32 L2Duration uint32 L2ReadySendDuration uint32 L2SendDuration uint32 L2PackageToQueueDuration uint32 L3TotalRcvDuration uint32 IfIndex uint32 L4PackageRcvFromQueueDuration uint64 L4TotalPackageSize uint64 L2EnterQueueCount uint8 L4PackageCount uint8 L4RetransmitPackageCount uint8 L3ResolveMacCount uint8 L3NetFilterCount uint8 FunctionName enums.SocketFunctionName Protocol enums.ConnectionProtocol SSL uint8 } func (d *SocketDetailEvent) ReadFrom(r btf.Reader) { d.ConnectionID = r.ReadUint64() d.RandomID = r.ReadUint64() d.DataID0 = r.ReadUint64() d.StartTime = r.ReadUint64() d.EndTime = r.ReadUint64() d.L4Duration = r.ReadUint32() d.L3Duration = r.ReadUint32() d.L3LocalDuration = r.ReadUint32() d.L3OutputDuration = r.ReadUint32() d.L3ResolveMacDuration = r.ReadUint32() d.L3NetFilterDuration = r.ReadUint32() d.L2Duration = r.ReadUint32() d.L2ReadySendDuration = r.ReadUint32() d.L2SendDuration = r.ReadUint32() d.L2PackageToQueueDuration = r.ReadUint32() d.L3TotalRcvDuration = r.ReadUint32() d.IfIndex = r.ReadUint32() d.L4PackageRcvFromQueueDuration = r.ReadUint64() d.L4TotalPackageSize = r.ReadUint64() d.L2EnterQueueCount = r.ReadUint8() d.L4PackageCount = r.ReadUint8() d.L4RetransmitPackageCount = r.ReadUint8() d.L3ResolveMacCount = r.ReadUint8() d.L3NetFilterCount = r.ReadUint8() d.FunctionName = enums.SocketFunctionName(r.ReadUint8()) d.Protocol = enums.ConnectionProtocol(r.ReadUint8()) d.SSL = r.ReadUint8() } func (d *SocketDetailEvent) Time() uint64 { return d.StartTime } func (d *SocketDetailEvent) GetConnectionID() uint64 { return d.ConnectionID } func (d *SocketDetailEvent) GetRandomID() uint64 { return d.RandomID } func (d *SocketDetailEvent) Timestamp() time.Time { return host.Time(d.StartTime) } func (d *SocketDetailEvent) DataID() uint64 { return d.DataID0 } func (d *SocketDetailEvent) GetStartTime() uint64 { return d.StartTime } func (d *SocketDetailEvent) GetEndTime() uint64 { return d.EndTime } func (d *SocketDetailEvent) GetL4PackageCount() uint8 { return d.L4PackageCount } func (d *SocketDetailEvent) GetL4TotalPackageSize() uint64 { return d.L4TotalPackageSize } func (d *SocketDetailEvent) GetFunctionName() enums.SocketFunctionName { return d.FunctionName } func (d *SocketDetailEvent) GetProtocol() enums.ConnectionProtocol { return d.Protocol } func (d *SocketDetailEvent) GetSSL() uint8 { return d.SSL }