pkg/tools/enums/socket.go (173 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 enums
import "fmt"
const (
unknown = "unknown"
http = "http"
)
var SocketFamilyUnknown = uint8(0xff)
// ConnectionRole represents the role of the current process is the connection
// whether it's a server or a client, if it's not trigger the connection/accept request, then it's unknown
type ConnectionRole uint32
const (
ConnectionRoleUnknown ConnectionRole = 0
ConnectionRoleClient ConnectionRole = 1
ConnectionRoleServer ConnectionRole = 2
)
func (r ConnectionRole) String() string {
switch r {
case ConnectionRoleClient:
return "client"
case ConnectionRoleServer:
return "server"
default:
return unknown
}
}
func (r ConnectionRole) Revert() ConnectionRole {
switch r {
case ConnectionRoleClient:
return ConnectionRoleServer
case ConnectionRoleServer:
return ConnectionRoleClient
default:
return ConnectionRoleUnknown
}
}
// SocketDataDirection indicates whether data is being written or receive
type SocketDataDirection uint8
const (
SocketDataDirectionIngress SocketDataDirection = 1
SocketDataDirectionEgress SocketDataDirection = 2
)
func (d SocketDataDirection) String() string {
switch d {
case SocketDataDirectionIngress:
return "inbound"
case SocketDataDirectionEgress:
return "outbound"
default:
return unknown
}
}
// SocketDataStaticsType represents the stat type when read or write
type SocketDataStaticsType uint8
const (
SocketDataStaticsTypeRTT = 1
SocketDataStaticsTypeExeTime = 2
)
type SocketExceptionOperationType uint32
const (
SocketExceptionOperationRetransmit SocketExceptionOperationType = 1
SocketExceptionOperationDrop SocketExceptionOperationType = 2
)
type SocketMessageType uint8
const (
SocketMessageTypeUnknown SocketMessageType = 0
SocketMessageTypeRequest SocketMessageType = 1
SocketMessageTypeResponse SocketMessageType = 2
)
func (m SocketMessageType) String() string {
switch m {
case SocketMessageTypeRequest:
return "request"
case SocketMessageTypeResponse:
return "response"
default:
return unknown
}
}
type SocketFunctionName uint8
const (
SocketFunctionNameConnect = 1
SocketFunctionNameAccept = 2
SocketFunctionNameClose = 3
SocketFunctionNameSend = 4
SocketFunctionNameSendto = 5
SocketFunctionNameSendMsg = 6
SocketFunctionNameSendMMSg = 7
SocketFunctionNameSendFile = 8
SocketFunctionNameWrite = 9
SocketFunctionNameWritev = 10
SocketFunctionNameRead = 11
SocketFunctionNameReadv = 12
SocketFunctionNameRecv = 13
SocketFunctionNameRecvfrom = 14
SocketFunctionNameRecvMsg = 15
SocketFunctionNameRecvMMsg = 16
SocketFunctionNameResent = 17
SocketFunctionNameSslWrite = 18
SocketFunctionNameSslRead = 19
SocketFunctionNameGoTLSWrite = 20
SocketFunctionNameGoTLSRead = 21
)
// nolint
func (f SocketFunctionName) String() string {
switch f {
case SocketFunctionNameConnect:
return "Connect"
case SocketFunctionNameAccept:
return "Accept"
case SocketFunctionNameClose:
return "Close"
case SocketFunctionNameSend:
return "Send"
case SocketFunctionNameSendto:
return "Sendto"
case SocketFunctionNameSendMsg:
return "SendMsg"
case SocketFunctionNameSendMMSg:
return "SendMMSg"
case SocketFunctionNameSendFile:
return "SendFile"
case SocketFunctionNameWrite:
return "Write"
case SocketFunctionNameWritev:
return "Writev"
case SocketFunctionNameRead:
return "Read"
case SocketFunctionNameReadv:
return "Readv"
case SocketFunctionNameRecv:
return "Recv"
case SocketFunctionNameRecvfrom:
return "Recvfrom"
case SocketFunctionNameRecvMsg:
return "RecvMsg"
case SocketFunctionNameRecvMMsg:
return "RecvMMsg"
case SocketFunctionNameResent:
return "Resent"
case SocketFunctionNameSslWrite:
return "SslWrite"
case SocketFunctionNameSslRead:
return "SslRead"
case SocketFunctionNameGoTLSWrite:
return "GoTLSWrite"
case SocketFunctionNameGoTLSRead:
return "GoTLSRead"
default:
return fmt.Sprintf("Unknown(%d)", f)
}
}
func (f SocketFunctionName) GetSocketOperationType() SocketOperationType {
switch f {
case SocketFunctionNameConnect:
return SocketOperationTypeConnect
case SocketFunctionNameAccept:
return SocketOperationTypeAccept
case SocketFunctionNameClose:
return SocketOperationTypeClose
case SocketFunctionNameSend, SocketFunctionNameSendto, SocketFunctionNameSendMsg, SocketFunctionNameSendMMSg,
SocketFunctionNameSendFile, SocketFunctionNameWrite, SocketFunctionNameWritev, SocketFunctionNameResent,
SocketFunctionNameSslWrite, SocketFunctionNameGoTLSWrite:
return SocketOperationTypeWrite
case SocketFunctionNameRead, SocketFunctionNameReadv, SocketFunctionNameRecv, SocketFunctionNameRecvfrom,
SocketFunctionNameRecvMsg, SocketFunctionNameRecvMMsg, SocketFunctionNameSslRead, SocketFunctionNameGoTLSRead:
return SocketOperationTypeRead
}
return SocketOperationTypeUnknown
}
type SocketOperationType int
var (
SocketOperationTypeConnect SocketOperationType = 0
SocketOperationTypeAccept SocketOperationType = 1
SocketOperationTypeClose SocketOperationType = 2
SocketOperationTypeWrite SocketOperationType = 3
SocketOperationTypeRead SocketOperationType = 4
SocketOperationTypeUnknown SocketOperationType = 5
)