Merge pull request #5751 from AkihiroSuda/runc-v1.0.1
update runc to v1.0.1
This commit is contained in:
commit
29b86c5479
2
go.mod
2
go.mod
@ -39,7 +39,7 @@ require (
|
|||||||
github.com/moby/sys/symlink v0.1.0
|
github.com/moby/sys/symlink v0.1.0
|
||||||
github.com/opencontainers/go-digest v1.0.0
|
github.com/opencontainers/go-digest v1.0.0
|
||||||
github.com/opencontainers/image-spec v1.0.1
|
github.com/opencontainers/image-spec v1.0.1
|
||||||
github.com/opencontainers/runc v1.0.0
|
github.com/opencontainers/runc v1.0.1
|
||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
|
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
|
||||||
github.com/opencontainers/selinux v1.8.2
|
github.com/opencontainers/selinux v1.8.2
|
||||||
github.com/pelletier/go-toml v1.8.1
|
github.com/pelletier/go-toml v1.8.1
|
||||||
|
8
go.sum
8
go.sum
@ -75,8 +75,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
|
|||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
||||||
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/cilium/ebpf v0.6.1 h1:n6ZUOkSFi6OwcMeTCFaDQx2Onx2rEikQo69315MNbdc=
|
github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI=
|
||||||
github.com/cilium/ebpf v0.6.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
@ -369,8 +369,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
|
|||||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||||
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
||||||
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||||
github.com/opencontainers/runc v1.0.0 h1:QOhAQAYUlKeofuyeKdR6ITvOnXLPbEAjPMjz9wCUXcU=
|
github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs=
|
||||||
github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA=
|
github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=
|
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=
|
||||||
|
@ -76,8 +76,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn
|
|||||||
github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc=
|
github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc=
|
||||||
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
||||||
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/cilium/ebpf v0.6.1 h1:n6ZUOkSFi6OwcMeTCFaDQx2Onx2rEikQo69315MNbdc=
|
github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI=
|
||||||
github.com/cilium/ebpf v0.6.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
@ -344,8 +344,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
|
|||||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||||
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
||||||
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||||
github.com/opencontainers/runc v1.0.0 h1:QOhAQAYUlKeofuyeKdR6ITvOnXLPbEAjPMjz9wCUXcU=
|
github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs=
|
||||||
github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA=
|
github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||||
github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||||
|
@ -1 +1 @@
|
|||||||
v1.0.0
|
v1.0.1
|
||||||
|
52
vendor/github.com/cilium/ebpf/asm/func.go
generated
vendored
52
vendor/github.com/cilium/ebpf/asm/func.go
generated
vendored
@ -132,6 +132,58 @@ const (
|
|||||||
FnSkStorageDelete
|
FnSkStorageDelete
|
||||||
FnSendSignal
|
FnSendSignal
|
||||||
FnTcpGenSyncookie
|
FnTcpGenSyncookie
|
||||||
|
FnSkbOutput
|
||||||
|
FnProbeReadUser
|
||||||
|
FnProbeReadKernel
|
||||||
|
FnProbeReadUserStr
|
||||||
|
FnProbeReadKernelStr
|
||||||
|
FnTcpSendAck
|
||||||
|
FnSendSignalThread
|
||||||
|
FnJiffies64
|
||||||
|
FnReadBranchRecords
|
||||||
|
FnGetNsCurrentPidTgid
|
||||||
|
FnXdpOutput
|
||||||
|
FnGetNetnsCookie
|
||||||
|
FnGetCurrentAncestorCgroupId
|
||||||
|
FnSkAssign
|
||||||
|
FnKtimeGetBootNs
|
||||||
|
FnSeqPrintf
|
||||||
|
FnSeqWrite
|
||||||
|
FnSkCgroupId
|
||||||
|
FnSkAncestorCgroupId
|
||||||
|
FnRingbufOutput
|
||||||
|
FnRingbufReserve
|
||||||
|
FnRingbufSubmit
|
||||||
|
FnRingbufDiscard
|
||||||
|
FnRingbufQuery
|
||||||
|
FnCsumLevel
|
||||||
|
FnSkcToTcp6Sock
|
||||||
|
FnSkcToTcpSock
|
||||||
|
FnSkcToTcpTimewaitSock
|
||||||
|
FnSkcToTcpRequestSock
|
||||||
|
FnSkcToUdp6Sock
|
||||||
|
FnGetTaskStack
|
||||||
|
FnLoadHdrOpt
|
||||||
|
FnStoreHdrOpt
|
||||||
|
FnReserveHdrOpt
|
||||||
|
FnInodeStorageGet
|
||||||
|
FnInodeStorageDelete
|
||||||
|
FnDPath
|
||||||
|
FnCopyFromUser
|
||||||
|
FnSnprintfBtf
|
||||||
|
FnSeqPrintfBtf
|
||||||
|
FnSkbCgroupClassid
|
||||||
|
FnRedirectNeigh
|
||||||
|
FnPerCpuPtr
|
||||||
|
FnThisCpuPtr
|
||||||
|
FnRedirectPeer
|
||||||
|
FnTaskStorageGet
|
||||||
|
FnTaskStorageDelete
|
||||||
|
FnGetCurrentTaskBtf
|
||||||
|
FnBprmOptsSet
|
||||||
|
FnKtimeGetCoarseNs
|
||||||
|
FnImaInodeHash
|
||||||
|
FnSockFromFile
|
||||||
)
|
)
|
||||||
|
|
||||||
// Call emits a function call.
|
// Call emits a function call.
|
||||||
|
56
vendor/github.com/cilium/ebpf/asm/func_string.go
generated
vendored
56
vendor/github.com/cilium/ebpf/asm/func_string.go
generated
vendored
@ -119,11 +119,63 @@ func _() {
|
|||||||
_ = x[FnSkStorageDelete-108]
|
_ = x[FnSkStorageDelete-108]
|
||||||
_ = x[FnSendSignal-109]
|
_ = x[FnSendSignal-109]
|
||||||
_ = x[FnTcpGenSyncookie-110]
|
_ = x[FnTcpGenSyncookie-110]
|
||||||
|
_ = x[FnSkbOutput-111]
|
||||||
|
_ = x[FnProbeReadUser-112]
|
||||||
|
_ = x[FnProbeReadKernel-113]
|
||||||
|
_ = x[FnProbeReadUserStr-114]
|
||||||
|
_ = x[FnProbeReadKernelStr-115]
|
||||||
|
_ = x[FnTcpSendAck-116]
|
||||||
|
_ = x[FnSendSignalThread-117]
|
||||||
|
_ = x[FnJiffies64-118]
|
||||||
|
_ = x[FnReadBranchRecords-119]
|
||||||
|
_ = x[FnGetNsCurrentPidTgid-120]
|
||||||
|
_ = x[FnXdpOutput-121]
|
||||||
|
_ = x[FnGetNetnsCookie-122]
|
||||||
|
_ = x[FnGetCurrentAncestorCgroupId-123]
|
||||||
|
_ = x[FnSkAssign-124]
|
||||||
|
_ = x[FnKtimeGetBootNs-125]
|
||||||
|
_ = x[FnSeqPrintf-126]
|
||||||
|
_ = x[FnSeqWrite-127]
|
||||||
|
_ = x[FnSkCgroupId-128]
|
||||||
|
_ = x[FnSkAncestorCgroupId-129]
|
||||||
|
_ = x[FnRingbufOutput-130]
|
||||||
|
_ = x[FnRingbufReserve-131]
|
||||||
|
_ = x[FnRingbufSubmit-132]
|
||||||
|
_ = x[FnRingbufDiscard-133]
|
||||||
|
_ = x[FnRingbufQuery-134]
|
||||||
|
_ = x[FnCsumLevel-135]
|
||||||
|
_ = x[FnSkcToTcp6Sock-136]
|
||||||
|
_ = x[FnSkcToTcpSock-137]
|
||||||
|
_ = x[FnSkcToTcpTimewaitSock-138]
|
||||||
|
_ = x[FnSkcToTcpRequestSock-139]
|
||||||
|
_ = x[FnSkcToUdp6Sock-140]
|
||||||
|
_ = x[FnGetTaskStack-141]
|
||||||
|
_ = x[FnLoadHdrOpt-142]
|
||||||
|
_ = x[FnStoreHdrOpt-143]
|
||||||
|
_ = x[FnReserveHdrOpt-144]
|
||||||
|
_ = x[FnInodeStorageGet-145]
|
||||||
|
_ = x[FnInodeStorageDelete-146]
|
||||||
|
_ = x[FnDPath-147]
|
||||||
|
_ = x[FnCopyFromUser-148]
|
||||||
|
_ = x[FnSnprintfBtf-149]
|
||||||
|
_ = x[FnSeqPrintfBtf-150]
|
||||||
|
_ = x[FnSkbCgroupClassid-151]
|
||||||
|
_ = x[FnRedirectNeigh-152]
|
||||||
|
_ = x[FnPerCpuPtr-153]
|
||||||
|
_ = x[FnThisCpuPtr-154]
|
||||||
|
_ = x[FnRedirectPeer-155]
|
||||||
|
_ = x[FnTaskStorageGet-156]
|
||||||
|
_ = x[FnTaskStorageDelete-157]
|
||||||
|
_ = x[FnGetCurrentTaskBtf-158]
|
||||||
|
_ = x[FnBprmOptsSet-159]
|
||||||
|
_ = x[FnKtimeGetCoarseNs-160]
|
||||||
|
_ = x[FnImaInodeHash-161]
|
||||||
|
_ = x[FnSockFromFile-162]
|
||||||
}
|
}
|
||||||
|
|
||||||
const _BuiltinFunc_name = "FnUnspecFnMapLookupElemFnMapUpdateElemFnMapDeleteElemFnProbeReadFnKtimeGetNsFnTracePrintkFnGetPrandomU32FnGetSmpProcessorIdFnSkbStoreBytesFnL3CsumReplaceFnL4CsumReplaceFnTailCallFnCloneRedirectFnGetCurrentPidTgidFnGetCurrentUidGidFnGetCurrentCommFnGetCgroupClassidFnSkbVlanPushFnSkbVlanPopFnSkbGetTunnelKeyFnSkbSetTunnelKeyFnPerfEventReadFnRedirectFnGetRouteRealmFnPerfEventOutputFnSkbLoadBytesFnGetStackidFnCsumDiffFnSkbGetTunnelOptFnSkbSetTunnelOptFnSkbChangeProtoFnSkbChangeTypeFnSkbUnderCgroupFnGetHashRecalcFnGetCurrentTaskFnProbeWriteUserFnCurrentTaskUnderCgroupFnSkbChangeTailFnSkbPullDataFnCsumUpdateFnSetHashInvalidFnGetNumaNodeIdFnSkbChangeHeadFnXdpAdjustHeadFnProbeReadStrFnGetSocketCookieFnGetSocketUidFnSetHashFnSetsockoptFnSkbAdjustRoomFnRedirectMapFnSkRedirectMapFnSockMapUpdateFnXdpAdjustMetaFnPerfEventReadValueFnPerfProgReadValueFnGetsockoptFnOverrideReturnFnSockOpsCbFlagsSetFnMsgRedirectMapFnMsgApplyBytesFnMsgCorkBytesFnMsgPullDataFnBindFnXdpAdjustTailFnSkbGetXfrmStateFnGetStackFnSkbLoadBytesRelativeFnFibLookupFnSockHashUpdateFnMsgRedirectHashFnSkRedirectHashFnLwtPushEncapFnLwtSeg6StoreBytesFnLwtSeg6AdjustSrhFnLwtSeg6ActionFnRcRepeatFnRcKeydownFnSkbCgroupIdFnGetCurrentCgroupIdFnGetLocalStorageFnSkSelectReuseportFnSkbAncestorCgroupIdFnSkLookupTcpFnSkLookupUdpFnSkReleaseFnMapPushElemFnMapPopElemFnMapPeekElemFnMsgPushDataFnMsgPopDataFnRcPointerRelFnSpinLockFnSpinUnlockFnSkFullsockFnTcpSockFnSkbEcnSetCeFnGetListenerSockFnSkcLookupTcpFnTcpCheckSyncookieFnSysctlGetNameFnSysctlGetCurrentValueFnSysctlGetNewValueFnSysctlSetNewValueFnStrtolFnStrtoulFnSkStorageGetFnSkStorageDeleteFnSendSignalFnTcpGenSyncookie"
|
const _BuiltinFunc_name = "FnUnspecFnMapLookupElemFnMapUpdateElemFnMapDeleteElemFnProbeReadFnKtimeGetNsFnTracePrintkFnGetPrandomU32FnGetSmpProcessorIdFnSkbStoreBytesFnL3CsumReplaceFnL4CsumReplaceFnTailCallFnCloneRedirectFnGetCurrentPidTgidFnGetCurrentUidGidFnGetCurrentCommFnGetCgroupClassidFnSkbVlanPushFnSkbVlanPopFnSkbGetTunnelKeyFnSkbSetTunnelKeyFnPerfEventReadFnRedirectFnGetRouteRealmFnPerfEventOutputFnSkbLoadBytesFnGetStackidFnCsumDiffFnSkbGetTunnelOptFnSkbSetTunnelOptFnSkbChangeProtoFnSkbChangeTypeFnSkbUnderCgroupFnGetHashRecalcFnGetCurrentTaskFnProbeWriteUserFnCurrentTaskUnderCgroupFnSkbChangeTailFnSkbPullDataFnCsumUpdateFnSetHashInvalidFnGetNumaNodeIdFnSkbChangeHeadFnXdpAdjustHeadFnProbeReadStrFnGetSocketCookieFnGetSocketUidFnSetHashFnSetsockoptFnSkbAdjustRoomFnRedirectMapFnSkRedirectMapFnSockMapUpdateFnXdpAdjustMetaFnPerfEventReadValueFnPerfProgReadValueFnGetsockoptFnOverrideReturnFnSockOpsCbFlagsSetFnMsgRedirectMapFnMsgApplyBytesFnMsgCorkBytesFnMsgPullDataFnBindFnXdpAdjustTailFnSkbGetXfrmStateFnGetStackFnSkbLoadBytesRelativeFnFibLookupFnSockHashUpdateFnMsgRedirectHashFnSkRedirectHashFnLwtPushEncapFnLwtSeg6StoreBytesFnLwtSeg6AdjustSrhFnLwtSeg6ActionFnRcRepeatFnRcKeydownFnSkbCgroupIdFnGetCurrentCgroupIdFnGetLocalStorageFnSkSelectReuseportFnSkbAncestorCgroupIdFnSkLookupTcpFnSkLookupUdpFnSkReleaseFnMapPushElemFnMapPopElemFnMapPeekElemFnMsgPushDataFnMsgPopDataFnRcPointerRelFnSpinLockFnSpinUnlockFnSkFullsockFnTcpSockFnSkbEcnSetCeFnGetListenerSockFnSkcLookupTcpFnTcpCheckSyncookieFnSysctlGetNameFnSysctlGetCurrentValueFnSysctlGetNewValueFnSysctlSetNewValueFnStrtolFnStrtoulFnSkStorageGetFnSkStorageDeleteFnSendSignalFnTcpGenSyncookieFnSkbOutputFnProbeReadUserFnProbeReadKernelFnProbeReadUserStrFnProbeReadKernelStrFnTcpSendAckFnSendSignalThreadFnJiffies64FnReadBranchRecordsFnGetNsCurrentPidTgidFnXdpOutputFnGetNetnsCookieFnGetCurrentAncestorCgroupIdFnSkAssignFnKtimeGetBootNsFnSeqPrintfFnSeqWriteFnSkCgroupIdFnSkAncestorCgroupIdFnRingbufOutputFnRingbufReserveFnRingbufSubmitFnRingbufDiscardFnRingbufQueryFnCsumLevelFnSkcToTcp6SockFnSkcToTcpSockFnSkcToTcpTimewaitSockFnSkcToTcpRequestSockFnSkcToUdp6SockFnGetTaskStackFnLoadHdrOptFnStoreHdrOptFnReserveHdrOptFnInodeStorageGetFnInodeStorageDeleteFnDPathFnCopyFromUserFnSnprintfBtfFnSeqPrintfBtfFnSkbCgroupClassidFnRedirectNeighFnPerCpuPtrFnThisCpuPtrFnRedirectPeerFnTaskStorageGetFnTaskStorageDeleteFnGetCurrentTaskBtfFnBprmOptsSetFnKtimeGetCoarseNsFnImaInodeHashFnSockFromFile"
|
||||||
|
|
||||||
var _BuiltinFunc_index = [...]uint16{0, 8, 23, 38, 53, 64, 76, 89, 104, 123, 138, 153, 168, 178, 193, 212, 230, 246, 264, 277, 289, 306, 323, 338, 348, 363, 380, 394, 406, 416, 433, 450, 466, 481, 497, 512, 528, 544, 568, 583, 596, 608, 624, 639, 654, 669, 683, 700, 714, 723, 735, 750, 763, 778, 793, 808, 828, 847, 859, 875, 894, 910, 925, 939, 952, 958, 973, 990, 1000, 1022, 1033, 1049, 1066, 1082, 1096, 1115, 1133, 1148, 1158, 1169, 1182, 1202, 1219, 1238, 1259, 1272, 1285, 1296, 1309, 1321, 1334, 1347, 1359, 1373, 1383, 1395, 1407, 1416, 1429, 1446, 1460, 1479, 1494, 1517, 1536, 1555, 1563, 1572, 1586, 1603, 1615, 1632}
|
var _BuiltinFunc_index = [...]uint16{0, 8, 23, 38, 53, 64, 76, 89, 104, 123, 138, 153, 168, 178, 193, 212, 230, 246, 264, 277, 289, 306, 323, 338, 348, 363, 380, 394, 406, 416, 433, 450, 466, 481, 497, 512, 528, 544, 568, 583, 596, 608, 624, 639, 654, 669, 683, 700, 714, 723, 735, 750, 763, 778, 793, 808, 828, 847, 859, 875, 894, 910, 925, 939, 952, 958, 973, 990, 1000, 1022, 1033, 1049, 1066, 1082, 1096, 1115, 1133, 1148, 1158, 1169, 1182, 1202, 1219, 1238, 1259, 1272, 1285, 1296, 1309, 1321, 1334, 1347, 1359, 1373, 1383, 1395, 1407, 1416, 1429, 1446, 1460, 1479, 1494, 1517, 1536, 1555, 1563, 1572, 1586, 1603, 1615, 1632, 1643, 1658, 1675, 1693, 1713, 1725, 1743, 1754, 1773, 1794, 1805, 1821, 1849, 1859, 1875, 1886, 1896, 1908, 1928, 1943, 1959, 1974, 1990, 2004, 2015, 2030, 2044, 2066, 2087, 2102, 2116, 2128, 2141, 2156, 2173, 2193, 2200, 2214, 2227, 2241, 2259, 2274, 2285, 2297, 2311, 2327, 2346, 2365, 2378, 2396, 2410, 2424}
|
||||||
|
|
||||||
func (i BuiltinFunc) String() string {
|
func (i BuiltinFunc) String() string {
|
||||||
if i < 0 || i >= BuiltinFunc(len(_BuiltinFunc_index)-1) {
|
if i < 0 || i >= BuiltinFunc(len(_BuiltinFunc_index)-1) {
|
||||||
|
3
vendor/github.com/cilium/ebpf/elf_reader.go
generated
vendored
3
vendor/github.com/cilium/ebpf/elf_reader.go
generated
vendored
@ -877,6 +877,9 @@ func getProgType(sectionName string) (ProgramType, AttachType, uint32, string) {
|
|||||||
"lirc_mode2": {LircMode2, AttachLircMode2, 0},
|
"lirc_mode2": {LircMode2, AttachLircMode2, 0},
|
||||||
"flow_dissector": {FlowDissector, AttachFlowDissector, 0},
|
"flow_dissector": {FlowDissector, AttachFlowDissector, 0},
|
||||||
"iter/": {Tracing, AttachTraceIter, 0},
|
"iter/": {Tracing, AttachTraceIter, 0},
|
||||||
|
"fentry/": {Tracing, AttachTraceFEntry, 0},
|
||||||
|
"fmod_ret/": {Tracing, AttachModifyReturn, 0},
|
||||||
|
"fexit/": {Tracing, AttachTraceFExit, 0},
|
||||||
"fentry.s/": {Tracing, AttachTraceFEntry, unix.BPF_F_SLEEPABLE},
|
"fentry.s/": {Tracing, AttachTraceFEntry, unix.BPF_F_SLEEPABLE},
|
||||||
"fmod_ret.s/": {Tracing, AttachModifyReturn, unix.BPF_F_SLEEPABLE},
|
"fmod_ret.s/": {Tracing, AttachModifyReturn, unix.BPF_F_SLEEPABLE},
|
||||||
"fexit.s/": {Tracing, AttachTraceFExit, unix.BPF_F_SLEEPABLE},
|
"fexit.s/": {Tracing, AttachTraceFExit, unix.BPF_F_SLEEPABLE},
|
||||||
|
4
vendor/github.com/cilium/ebpf/internal/btf/btf.go
generated
vendored
4
vendor/github.com/cilium/ebpf/internal/btf/btf.go
generated
vendored
@ -377,7 +377,7 @@ func (s *Spec) marshal(opts marshalOpts) ([]byte, error) {
|
|||||||
for _, raw := range s.rawTypes {
|
for _, raw := range s.rawTypes {
|
||||||
switch {
|
switch {
|
||||||
case opts.StripFuncLinkage && raw.Kind() == kindFunc:
|
case opts.StripFuncLinkage && raw.Kind() == kindFunc:
|
||||||
raw.SetLinkage(linkageStatic)
|
raw.SetLinkage(StaticFunc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := raw.Marshal(&buf, opts.ByteOrder); err != nil {
|
if err := raw.Marshal(&buf, opts.ByteOrder); err != nil {
|
||||||
@ -779,7 +779,7 @@ var haveFuncLinkage = internal.FeatureTest("BTF func linkage", "5.6", func() err
|
|||||||
types.Func.SetKind(kindFunc)
|
types.Func.SetKind(kindFunc)
|
||||||
types.Func.SizeType = 1 // aka FuncProto
|
types.Func.SizeType = 1 // aka FuncProto
|
||||||
types.Func.NameOff = 1
|
types.Func.NameOff = 1
|
||||||
types.Func.SetLinkage(linkageGlobal)
|
types.Func.SetLinkage(GlobalFunc)
|
||||||
|
|
||||||
btf := marshalBTF(&types, strings, internal.NativeEndian)
|
btf := marshalBTF(&types, strings, internal.NativeEndian)
|
||||||
|
|
||||||
|
27
vendor/github.com/cilium/ebpf/internal/btf/btf_types.go
generated
vendored
27
vendor/github.com/cilium/ebpf/internal/btf/btf_types.go
generated
vendored
@ -6,6 +6,8 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:generate stringer -linecomment -output=btf_types_string.go -type=FuncLinkage,VarLinkage
|
||||||
|
|
||||||
// btfKind describes a Type.
|
// btfKind describes a Type.
|
||||||
type btfKind uint8
|
type btfKind uint8
|
||||||
|
|
||||||
@ -31,14 +33,23 @@ const (
|
|||||||
kindDatasec
|
kindDatasec
|
||||||
)
|
)
|
||||||
|
|
||||||
// btfFuncLinkage describes BTF function linkage metadata.
|
// FuncLinkage describes BTF function linkage metadata.
|
||||||
type btfFuncLinkage uint8
|
type FuncLinkage int
|
||||||
|
|
||||||
// Equivalent of enum btf_func_linkage.
|
// Equivalent of enum btf_func_linkage.
|
||||||
const (
|
const (
|
||||||
linkageStatic btfFuncLinkage = iota
|
StaticFunc FuncLinkage = iota // static
|
||||||
linkageGlobal
|
GlobalFunc // global
|
||||||
// linkageExtern // Currently unused in libbpf.
|
ExternFunc // extern
|
||||||
|
)
|
||||||
|
|
||||||
|
// VarLinkage describes BTF variable linkage metadata.
|
||||||
|
type VarLinkage int
|
||||||
|
|
||||||
|
const (
|
||||||
|
StaticVar VarLinkage = iota // static
|
||||||
|
GlobalVar // global
|
||||||
|
ExternVar // extern
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -144,11 +155,11 @@ func (bt *btfType) KindFlag() bool {
|
|||||||
return bt.info(btfTypeKindFlagMask, btfTypeKindFlagShift) == 1
|
return bt.info(btfTypeKindFlagMask, btfTypeKindFlagShift) == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bt *btfType) Linkage() btfFuncLinkage {
|
func (bt *btfType) Linkage() FuncLinkage {
|
||||||
return btfFuncLinkage(bt.info(btfTypeVlenMask, btfTypeVlenShift))
|
return FuncLinkage(bt.info(btfTypeVlenMask, btfTypeVlenShift))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bt *btfType) SetLinkage(linkage btfFuncLinkage) {
|
func (bt *btfType) SetLinkage(linkage FuncLinkage) {
|
||||||
bt.setInfo(uint32(linkage), btfTypeVlenMask, btfTypeVlenShift)
|
bt.setInfo(uint32(linkage), btfTypeVlenMask, btfTypeVlenShift)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
44
vendor/github.com/cilium/ebpf/internal/btf/btf_types_string.go
generated
vendored
Normal file
44
vendor/github.com/cilium/ebpf/internal/btf/btf_types_string.go
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Code generated by "stringer -linecomment -output=btf_types_string.go -type=FuncLinkage,VarLinkage"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package btf
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[StaticFunc-0]
|
||||||
|
_ = x[GlobalFunc-1]
|
||||||
|
_ = x[ExternFunc-2]
|
||||||
|
}
|
||||||
|
|
||||||
|
const _FuncLinkage_name = "staticglobalextern"
|
||||||
|
|
||||||
|
var _FuncLinkage_index = [...]uint8{0, 6, 12, 18}
|
||||||
|
|
||||||
|
func (i FuncLinkage) String() string {
|
||||||
|
if i < 0 || i >= FuncLinkage(len(_FuncLinkage_index)-1) {
|
||||||
|
return "FuncLinkage(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
return _FuncLinkage_name[_FuncLinkage_index[i]:_FuncLinkage_index[i+1]]
|
||||||
|
}
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[StaticVar-0]
|
||||||
|
_ = x[GlobalVar-1]
|
||||||
|
_ = x[ExternVar-2]
|
||||||
|
}
|
||||||
|
|
||||||
|
const _VarLinkage_name = "staticglobalextern"
|
||||||
|
|
||||||
|
var _VarLinkage_index = [...]uint8{0, 6, 12, 18}
|
||||||
|
|
||||||
|
func (i VarLinkage) String() string {
|
||||||
|
if i < 0 || i >= VarLinkage(len(_VarLinkage_index)-1) {
|
||||||
|
return "VarLinkage(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
return _VarLinkage_name[_VarLinkage_index[i]:_VarLinkage_index[i+1]]
|
||||||
|
}
|
12
vendor/github.com/cilium/ebpf/internal/btf/types.go
generated
vendored
12
vendor/github.com/cilium/ebpf/internal/btf/types.go
generated
vendored
@ -381,10 +381,11 @@ type Func struct {
|
|||||||
TypeID
|
TypeID
|
||||||
Name
|
Name
|
||||||
Type Type
|
Type Type
|
||||||
|
Linkage FuncLinkage
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Func) String() string {
|
func (f *Func) String() string {
|
||||||
return fmt.Sprintf("func#%d[%q proto=#%d]", f.TypeID, f.Name, f.Type.ID())
|
return fmt.Sprintf("func#%d[%s %q proto=#%d]", f.TypeID, f.Linkage, f.Name, f.Type.ID())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Func) walk(tdq *typeDeque) { tdq.push(&f.Type) }
|
func (f *Func) walk(tdq *typeDeque) { tdq.push(&f.Type) }
|
||||||
@ -434,11 +435,11 @@ type Var struct {
|
|||||||
TypeID
|
TypeID
|
||||||
Name
|
Name
|
||||||
Type Type
|
Type Type
|
||||||
|
Linkage VarLinkage
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Var) String() string {
|
func (v *Var) String() string {
|
||||||
// TODO: Linkage
|
return fmt.Sprintf("var#%d[%s %q]", v.TypeID, v.Linkage, v.Name)
|
||||||
return fmt.Sprintf("var#%d[%q]", v.TypeID, v.Name)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Var) walk(tdq *typeDeque) { tdq.push(&v.Type) }
|
func (v *Var) walk(tdq *typeDeque) { tdq.push(&v.Type) }
|
||||||
@ -803,7 +804,7 @@ func inflateRawTypes(rawTypes []rawType, rawStrings stringTable) (types []Type,
|
|||||||
typ = restrict
|
typ = restrict
|
||||||
|
|
||||||
case kindFunc:
|
case kindFunc:
|
||||||
fn := &Func{id, name, nil}
|
fn := &Func{id, name, nil, raw.Linkage()}
|
||||||
fixup(raw.Type(), kindFuncProto, &fn.Type)
|
fixup(raw.Type(), kindFuncProto, &fn.Type)
|
||||||
typ = fn
|
typ = fn
|
||||||
|
|
||||||
@ -828,7 +829,8 @@ func inflateRawTypes(rawTypes []rawType, rawStrings stringTable) (types []Type,
|
|||||||
typ = fp
|
typ = fp
|
||||||
|
|
||||||
case kindVar:
|
case kindVar:
|
||||||
v := &Var{id, name, nil}
|
variable := raw.data.(*btfVariable)
|
||||||
|
v := &Var{id, name, nil, VarLinkage(variable.Linkage)}
|
||||||
fixup(raw.Type(), kindUnknown, &v.Type)
|
fixup(raw.Type(), kindUnknown, &v.Type)
|
||||||
typ = v
|
typ = v
|
||||||
|
|
||||||
|
67
vendor/github.com/cilium/ebpf/internal/syscall.go
generated
vendored
67
vendor/github.com/cilium/ebpf/internal/syscall.go
generated
vendored
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/cilium/ebpf/internal/unix"
|
"github.com/cilium/ebpf/internal/unix"
|
||||||
@ -61,7 +62,7 @@ func BPF(cmd BPFCmd, attr unsafe.Pointer, size uintptr) (uintptr, error) {
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
if errNo != 0 {
|
if errNo != 0 {
|
||||||
err = errNo
|
err = wrappedErrno{errNo}
|
||||||
}
|
}
|
||||||
|
|
||||||
return r1, err
|
return r1, err
|
||||||
@ -178,3 +179,67 @@ func BPFObjGetInfoByFD(fd *FD, info unsafe.Pointer, size uintptr) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BPFObjName is a null-terminated string made up of
|
||||||
|
// 'A-Za-z0-9_' characters.
|
||||||
|
type BPFObjName [unix.BPF_OBJ_NAME_LEN]byte
|
||||||
|
|
||||||
|
// NewBPFObjName truncates the result if it is too long.
|
||||||
|
func NewBPFObjName(name string) BPFObjName {
|
||||||
|
var result BPFObjName
|
||||||
|
copy(result[:unix.BPF_OBJ_NAME_LEN-1], name)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
type BPFMapCreateAttr struct {
|
||||||
|
MapType uint32
|
||||||
|
KeySize uint32
|
||||||
|
ValueSize uint32
|
||||||
|
MaxEntries uint32
|
||||||
|
Flags uint32
|
||||||
|
InnerMapFd uint32 // since 4.12 56f668dfe00d
|
||||||
|
NumaNode uint32 // since 4.14 96eabe7a40aa
|
||||||
|
MapName BPFObjName // since 4.15 ad5b177bd73f
|
||||||
|
MapIfIndex uint32
|
||||||
|
BTFFd uint32
|
||||||
|
BTFKeyTypeID uint32
|
||||||
|
BTFValueTypeID uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func BPFMapCreate(attr *BPFMapCreateAttr) (*FD, error) {
|
||||||
|
fd, err := BPF(BPF_MAP_CREATE, unsafe.Pointer(attr), unsafe.Sizeof(*attr))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewFD(uint32(fd)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// wrappedErrno wraps syscall.Errno to prevent direct comparisons with
|
||||||
|
// syscall.E* or unix.E* constants.
|
||||||
|
//
|
||||||
|
// You should never export an error of this type.
|
||||||
|
type wrappedErrno struct {
|
||||||
|
syscall.Errno
|
||||||
|
}
|
||||||
|
|
||||||
|
func (we wrappedErrno) Unwrap() error {
|
||||||
|
return we.Errno
|
||||||
|
}
|
||||||
|
|
||||||
|
type syscallError struct {
|
||||||
|
error
|
||||||
|
errno syscall.Errno
|
||||||
|
}
|
||||||
|
|
||||||
|
func SyscallError(err error, errno syscall.Errno) error {
|
||||||
|
return &syscallError{err, errno}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (se *syscallError) Is(target error) bool {
|
||||||
|
return target == se.error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (se *syscallError) Unwrap() error {
|
||||||
|
return se.errno
|
||||||
|
}
|
||||||
|
2
vendor/github.com/cilium/ebpf/internal/unix/types_linux.go
generated
vendored
2
vendor/github.com/cilium/ebpf/internal/unix/types_linux.go
generated
vendored
@ -31,6 +31,8 @@ const (
|
|||||||
BPF_F_RDONLY_PROG = linux.BPF_F_RDONLY_PROG
|
BPF_F_RDONLY_PROG = linux.BPF_F_RDONLY_PROG
|
||||||
BPF_F_WRONLY_PROG = linux.BPF_F_WRONLY_PROG
|
BPF_F_WRONLY_PROG = linux.BPF_F_WRONLY_PROG
|
||||||
BPF_F_SLEEPABLE = linux.BPF_F_SLEEPABLE
|
BPF_F_SLEEPABLE = linux.BPF_F_SLEEPABLE
|
||||||
|
BPF_F_MMAPABLE = linux.BPF_F_MMAPABLE
|
||||||
|
BPF_F_INNER_MAP = linux.BPF_F_INNER_MAP
|
||||||
BPF_OBJ_NAME_LEN = linux.BPF_OBJ_NAME_LEN
|
BPF_OBJ_NAME_LEN = linux.BPF_OBJ_NAME_LEN
|
||||||
BPF_TAG_SIZE = linux.BPF_TAG_SIZE
|
BPF_TAG_SIZE = linux.BPF_TAG_SIZE
|
||||||
SYS_BPF = linux.SYS_BPF
|
SYS_BPF = linux.SYS_BPF
|
||||||
|
2
vendor/github.com/cilium/ebpf/internal/unix/types_other.go
generated
vendored
2
vendor/github.com/cilium/ebpf/internal/unix/types_other.go
generated
vendored
@ -31,6 +31,8 @@ const (
|
|||||||
BPF_F_RDONLY_PROG = 0
|
BPF_F_RDONLY_PROG = 0
|
||||||
BPF_F_WRONLY_PROG = 0
|
BPF_F_WRONLY_PROG = 0
|
||||||
BPF_F_SLEEPABLE = 0
|
BPF_F_SLEEPABLE = 0
|
||||||
|
BPF_F_MMAPABLE = 0
|
||||||
|
BPF_F_INNER_MAP = 0
|
||||||
BPF_OBJ_NAME_LEN = 0x10
|
BPF_OBJ_NAME_LEN = 0x10
|
||||||
BPF_TAG_SIZE = 0x8
|
BPF_TAG_SIZE = 0x8
|
||||||
SYS_BPF = 321
|
SYS_BPF = 321
|
||||||
|
43
vendor/github.com/cilium/ebpf/link/iter.go
generated
vendored
43
vendor/github.com/cilium/ebpf/link/iter.go
generated
vendored
@ -3,8 +3,10 @@ package link
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
"github.com/cilium/ebpf"
|
"github.com/cilium/ebpf"
|
||||||
|
"github.com/cilium/ebpf/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IterOptions struct {
|
type IterOptions struct {
|
||||||
@ -15,19 +17,45 @@ type IterOptions struct {
|
|||||||
// AttachTo requires the kernel to include BTF of itself,
|
// AttachTo requires the kernel to include BTF of itself,
|
||||||
// and it to be compiled with a recent pahole (>= 1.16).
|
// and it to be compiled with a recent pahole (>= 1.16).
|
||||||
Program *ebpf.Program
|
Program *ebpf.Program
|
||||||
|
|
||||||
|
// Map specifies the target map for bpf_map_elem and sockmap iterators.
|
||||||
|
// It may be nil.
|
||||||
|
Map *ebpf.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
// AttachIter attaches a BPF seq_file iterator.
|
// AttachIter attaches a BPF seq_file iterator.
|
||||||
func AttachIter(opts IterOptions) (*Iter, error) {
|
func AttachIter(opts IterOptions) (*Iter, error) {
|
||||||
link, err := AttachRawLink(RawLinkOptions{
|
if err := haveBPFLink(); err != nil {
|
||||||
Program: opts.Program,
|
return nil, err
|
||||||
Attach: ebpf.AttachTraceIter,
|
}
|
||||||
})
|
|
||||||
|
progFd := opts.Program.FD()
|
||||||
|
if progFd < 0 {
|
||||||
|
return nil, fmt.Errorf("invalid program: %s", internal.ErrClosedFd)
|
||||||
|
}
|
||||||
|
|
||||||
|
var info bpfIterLinkInfoMap
|
||||||
|
if opts.Map != nil {
|
||||||
|
mapFd := opts.Map.FD()
|
||||||
|
if mapFd < 0 {
|
||||||
|
return nil, fmt.Errorf("invalid map: %w", internal.ErrClosedFd)
|
||||||
|
}
|
||||||
|
info.map_fd = uint32(mapFd)
|
||||||
|
}
|
||||||
|
|
||||||
|
attr := bpfLinkCreateIterAttr{
|
||||||
|
prog_fd: uint32(progFd),
|
||||||
|
attach_type: ebpf.AttachTraceIter,
|
||||||
|
iter_info: internal.NewPointer(unsafe.Pointer(&info)),
|
||||||
|
iter_info_len: uint32(unsafe.Sizeof(info)),
|
||||||
|
}
|
||||||
|
|
||||||
|
fd, err := bpfLinkCreateIter(&attr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("can't link iterator: %w", err)
|
return nil, fmt.Errorf("can't link iterator: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Iter{*link}, err
|
return &Iter{RawLink{fd, ""}}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadPinnedIter loads a pinned iterator from a bpffs.
|
// LoadPinnedIter loads a pinned iterator from a bpffs.
|
||||||
@ -65,3 +93,8 @@ func (it *Iter) Open() (io.ReadCloser, error) {
|
|||||||
|
|
||||||
return fd.File("bpf_iter"), nil
|
return fd.File("bpf_iter"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// union bpf_iter_link_info.map
|
||||||
|
type bpfIterLinkInfoMap struct {
|
||||||
|
map_fd uint32
|
||||||
|
}
|
||||||
|
17
vendor/github.com/cilium/ebpf/link/syscalls.go
generated
vendored
17
vendor/github.com/cilium/ebpf/link/syscalls.go
generated
vendored
@ -102,6 +102,23 @@ func bpfLinkCreate(attr *bpfLinkCreateAttr) (*internal.FD, error) {
|
|||||||
return internal.NewFD(uint32(ptr)), nil
|
return internal.NewFD(uint32(ptr)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type bpfLinkCreateIterAttr struct {
|
||||||
|
prog_fd uint32
|
||||||
|
target_fd uint32
|
||||||
|
attach_type ebpf.AttachType
|
||||||
|
flags uint32
|
||||||
|
iter_info internal.Pointer
|
||||||
|
iter_info_len uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func bpfLinkCreateIter(attr *bpfLinkCreateIterAttr) (*internal.FD, error) {
|
||||||
|
ptr, err := internal.BPF(internal.BPF_LINK_CREATE, unsafe.Pointer(attr), unsafe.Sizeof(*attr))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return internal.NewFD(uint32(ptr)), nil
|
||||||
|
}
|
||||||
|
|
||||||
type bpfLinkUpdateAttr struct {
|
type bpfLinkUpdateAttr struct {
|
||||||
linkFd uint32
|
linkFd uint32
|
||||||
newProgFd uint32
|
newProgFd uint32
|
||||||
|
52
vendor/github.com/cilium/ebpf/link/uprobe.go
generated
vendored
52
vendor/github.com/cilium/ebpf/link/uprobe.go
generated
vendored
@ -35,6 +35,14 @@ type Executable struct {
|
|||||||
symbols map[string]elf.Symbol
|
symbols map[string]elf.Symbol
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UprobeOptions defines additional parameters that will be used
|
||||||
|
// when loading Uprobes.
|
||||||
|
type UprobeOptions struct {
|
||||||
|
// Symbol offset. Must be provided in case of external symbols (shared libs).
|
||||||
|
// If set, overrides the offset eventually parsed from the executable.
|
||||||
|
Offset uint64
|
||||||
|
}
|
||||||
|
|
||||||
// To open a new Executable, use:
|
// To open a new Executable, use:
|
||||||
//
|
//
|
||||||
// OpenExecutable("/bin/bash")
|
// OpenExecutable("/bin/bash")
|
||||||
@ -78,6 +86,10 @@ func (ex *Executable) addSymbols(f func() ([]elf.Symbol, error)) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, s := range syms {
|
for _, s := range syms {
|
||||||
|
if elf.ST_TYPE(s.Info) != elf.STT_FUNC {
|
||||||
|
// Symbol not associated with a function or other executable code.
|
||||||
|
continue
|
||||||
|
}
|
||||||
ex.symbols[s.Name] = s
|
ex.symbols[s.Name] = s
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -95,13 +107,18 @@ func (ex *Executable) symbol(symbol string) (*elf.Symbol, error) {
|
|||||||
// For example, /bin/bash::main():
|
// For example, /bin/bash::main():
|
||||||
//
|
//
|
||||||
// ex, _ = OpenExecutable("/bin/bash")
|
// ex, _ = OpenExecutable("/bin/bash")
|
||||||
// ex.Uprobe("main", prog)
|
// ex.Uprobe("main", prog, nil)
|
||||||
|
//
|
||||||
|
// When using symbols which belongs to shared libraries,
|
||||||
|
// an offset must be provided via options:
|
||||||
|
//
|
||||||
|
// ex.Uprobe("main", prog, &UprobeOptions{Offset: 0x123})
|
||||||
//
|
//
|
||||||
// The resulting Link must be Closed during program shutdown to avoid leaking
|
// The resulting Link must be Closed during program shutdown to avoid leaking
|
||||||
// system resources. Functions provided by shared libraries can currently not
|
// system resources. Functions provided by shared libraries can currently not
|
||||||
// be traced and will result in an ErrNotSupported.
|
// be traced and will result in an ErrNotSupported.
|
||||||
func (ex *Executable) Uprobe(symbol string, prog *ebpf.Program) (Link, error) {
|
func (ex *Executable) Uprobe(symbol string, prog *ebpf.Program, opts *UprobeOptions) (Link, error) {
|
||||||
u, err := ex.uprobe(symbol, prog, false)
|
u, err := ex.uprobe(symbol, prog, opts, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -119,13 +136,18 @@ func (ex *Executable) Uprobe(symbol string, prog *ebpf.Program) (Link, error) {
|
|||||||
// before the given symbol exits. For example, /bin/bash::main():
|
// before the given symbol exits. For example, /bin/bash::main():
|
||||||
//
|
//
|
||||||
// ex, _ = OpenExecutable("/bin/bash")
|
// ex, _ = OpenExecutable("/bin/bash")
|
||||||
// ex.Uretprobe("main", prog)
|
// ex.Uretprobe("main", prog, nil)
|
||||||
|
//
|
||||||
|
// When using symbols which belongs to shared libraries,
|
||||||
|
// an offset must be provided via options:
|
||||||
|
//
|
||||||
|
// ex.Uretprobe("main", prog, &UprobeOptions{Offset: 0x123})
|
||||||
//
|
//
|
||||||
// The resulting Link must be Closed during program shutdown to avoid leaking
|
// The resulting Link must be Closed during program shutdown to avoid leaking
|
||||||
// system resources. Functions provided by shared libraries can currently not
|
// system resources. Functions provided by shared libraries can currently not
|
||||||
// be traced and will result in an ErrNotSupported.
|
// be traced and will result in an ErrNotSupported.
|
||||||
func (ex *Executable) Uretprobe(symbol string, prog *ebpf.Program) (Link, error) {
|
func (ex *Executable) Uretprobe(symbol string, prog *ebpf.Program, opts *UprobeOptions) (Link, error) {
|
||||||
u, err := ex.uprobe(symbol, prog, true)
|
u, err := ex.uprobe(symbol, prog, opts, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -141,7 +163,7 @@ func (ex *Executable) Uretprobe(symbol string, prog *ebpf.Program) (Link, error)
|
|||||||
|
|
||||||
// uprobe opens a perf event for the given binary/symbol and attaches prog to it.
|
// uprobe opens a perf event for the given binary/symbol and attaches prog to it.
|
||||||
// If ret is true, create a uretprobe.
|
// If ret is true, create a uretprobe.
|
||||||
func (ex *Executable) uprobe(symbol string, prog *ebpf.Program, ret bool) (*perfEvent, error) {
|
func (ex *Executable) uprobe(symbol string, prog *ebpf.Program, opts *UprobeOptions, ret bool) (*perfEvent, error) {
|
||||||
if prog == nil {
|
if prog == nil {
|
||||||
return nil, fmt.Errorf("prog cannot be nil: %w", errInvalidInput)
|
return nil, fmt.Errorf("prog cannot be nil: %w", errInvalidInput)
|
||||||
}
|
}
|
||||||
@ -149,20 +171,28 @@ func (ex *Executable) uprobe(symbol string, prog *ebpf.Program, ret bool) (*perf
|
|||||||
return nil, fmt.Errorf("eBPF program type %s is not Kprobe: %w", prog.Type(), errInvalidInput)
|
return nil, fmt.Errorf("eBPF program type %s is not Kprobe: %w", prog.Type(), errInvalidInput)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var offset uint64
|
||||||
|
if opts != nil && opts.Offset != 0 {
|
||||||
|
offset = opts.Offset
|
||||||
|
} else {
|
||||||
sym, err := ex.symbol(symbol)
|
sym, err := ex.symbol(symbol)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("symbol '%s' not found in '%s': %w", symbol, ex.path, err)
|
return nil, fmt.Errorf("symbol '%s' not found: %w", symbol, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Symbols with location 0 from section undef are shared library calls and
|
// Symbols with location 0 from section undef are shared library calls and
|
||||||
// are relocated before the binary is executed. Dynamic linking is not
|
// are relocated before the binary is executed. Dynamic linking is not
|
||||||
// implemented by the library, so mark this as unsupported for now.
|
// implemented by the library, so mark this as unsupported for now.
|
||||||
if sym.Section == elf.SHN_UNDEF && sym.Value == 0 {
|
if sym.Section == elf.SHN_UNDEF && sym.Value == 0 {
|
||||||
return nil, fmt.Errorf("cannot resolve %s library call '%s': %w", ex.path, symbol, ErrNotSupported)
|
return nil, fmt.Errorf("cannot resolve %s library call '%s', "+
|
||||||
|
"consider providing the offset via options: %w", ex.path, symbol, ErrNotSupported)
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = sym.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use uprobe PMU if the kernel has it available.
|
// Use uprobe PMU if the kernel has it available.
|
||||||
tp, err := pmuUprobe(sym.Name, ex.path, sym.Value, ret)
|
tp, err := pmuUprobe(symbol, ex.path, offset, ret)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return tp, nil
|
return tp, nil
|
||||||
}
|
}
|
||||||
@ -171,7 +201,7 @@ func (ex *Executable) uprobe(symbol string, prog *ebpf.Program, ret bool) (*perf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Use tracefs if uprobe PMU is missing.
|
// Use tracefs if uprobe PMU is missing.
|
||||||
tp, err = tracefsUprobe(uprobeSanitizedSymbol(sym.Name), ex.path, sym.Value, ret)
|
tp, err = tracefsUprobe(uprobeSanitizedSymbol(symbol), ex.path, offset, ret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("creating trace event '%s:%s' in tracefs: %w", ex.path, symbol, err)
|
return nil, fmt.Errorf("creating trace event '%s:%s' in tracefs: %w", ex.path, symbol, err)
|
||||||
}
|
}
|
||||||
|
36
vendor/github.com/cilium/ebpf/map.go
generated
vendored
36
vendor/github.com/cilium/ebpf/map.go
generated
vendored
@ -316,26 +316,36 @@ func createMap(spec *MapSpec, inner *internal.FD, opts MapOptions, handles *hand
|
|||||||
return nil, fmt.Errorf("map create: %w", err)
|
return nil, fmt.Errorf("map create: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if spec.Flags&unix.BPF_F_MMAPABLE > 0 {
|
||||||
|
if err := haveMmapableMaps(); err != nil {
|
||||||
|
return nil, fmt.Errorf("map create: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if spec.Flags&unix.BPF_F_INNER_MAP > 0 {
|
||||||
|
if err := haveInnerMaps(); err != nil {
|
||||||
|
return nil, fmt.Errorf("map create: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
attr := bpfMapCreateAttr{
|
attr := internal.BPFMapCreateAttr{
|
||||||
mapType: spec.Type,
|
MapType: uint32(spec.Type),
|
||||||
keySize: spec.KeySize,
|
KeySize: spec.KeySize,
|
||||||
valueSize: spec.ValueSize,
|
ValueSize: spec.ValueSize,
|
||||||
maxEntries: spec.MaxEntries,
|
MaxEntries: spec.MaxEntries,
|
||||||
flags: spec.Flags,
|
Flags: spec.Flags,
|
||||||
numaNode: spec.NumaNode,
|
NumaNode: spec.NumaNode,
|
||||||
}
|
}
|
||||||
|
|
||||||
if inner != nil {
|
if inner != nil {
|
||||||
var err error
|
var err error
|
||||||
attr.innerMapFd, err = inner.Value()
|
attr.InnerMapFd, err = inner.Value()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("map create: %w", err)
|
return nil, fmt.Errorf("map create: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if haveObjName() == nil {
|
if haveObjName() == nil {
|
||||||
attr.mapName = newBPFObjName(spec.Name)
|
attr.MapName = internal.NewBPFObjName(spec.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
var btfDisabled bool
|
var btfDisabled bool
|
||||||
@ -347,13 +357,13 @@ func createMap(spec *MapSpec, inner *internal.FD, opts MapOptions, handles *hand
|
|||||||
}
|
}
|
||||||
|
|
||||||
if handle != nil {
|
if handle != nil {
|
||||||
attr.btfFd = uint32(handle.FD())
|
attr.BTFFd = uint32(handle.FD())
|
||||||
attr.btfKeyTypeID = btf.MapKey(spec.BTF).ID()
|
attr.BTFKeyTypeID = uint32(btf.MapKey(spec.BTF).ID())
|
||||||
attr.btfValueTypeID = btf.MapValue(spec.BTF).ID()
|
attr.BTFValueTypeID = uint32(btf.MapValue(spec.BTF).ID())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fd, err := bpfMapCreate(&attr)
|
fd, err := internal.BPFMapCreate(&attr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, unix.EPERM) {
|
if errors.Is(err, unix.EPERM) {
|
||||||
return nil, fmt.Errorf("map create: RLIMIT_MEMLOCK may be too low: %w", err)
|
return nil, fmt.Errorf("map create: RLIMIT_MEMLOCK may be too low: %w", err)
|
||||||
|
2
vendor/github.com/cilium/ebpf/prog.go
generated
vendored
2
vendor/github.com/cilium/ebpf/prog.go
generated
vendored
@ -175,7 +175,7 @@ func newProgramWithOptions(spec *ProgramSpec, opts ProgramOptions, handles *hand
|
|||||||
}
|
}
|
||||||
|
|
||||||
if haveObjName() == nil {
|
if haveObjName() == nil {
|
||||||
attr.progName = newBPFObjName(spec.Name)
|
attr.progName = internal.NewBPFObjName(spec.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
167
vendor/github.com/cilium/ebpf/syscalls.go
generated
vendored
167
vendor/github.com/cilium/ebpf/syscalls.go
generated
vendored
@ -3,6 +3,7 @@ package ebpf
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/cilium/ebpf/internal"
|
"github.com/cilium/ebpf/internal"
|
||||||
@ -10,19 +11,10 @@ import (
|
|||||||
"github.com/cilium/ebpf/internal/unix"
|
"github.com/cilium/ebpf/internal/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Generic errors returned by BPF syscalls.
|
// ErrNotExist is returned when loading a non-existing map or program.
|
||||||
var ErrNotExist = errors.New("requested object does not exist")
|
//
|
||||||
|
// Deprecated: use os.ErrNotExist instead.
|
||||||
// bpfObjName is a null-terminated string made up of
|
var ErrNotExist = os.ErrNotExist
|
||||||
// 'A-Za-z0-9_' characters.
|
|
||||||
type bpfObjName [unix.BPF_OBJ_NAME_LEN]byte
|
|
||||||
|
|
||||||
// newBPFObjName truncates the result if it is too long.
|
|
||||||
func newBPFObjName(name string) bpfObjName {
|
|
||||||
var result bpfObjName
|
|
||||||
copy(result[:unix.BPF_OBJ_NAME_LEN-1], name)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
// invalidBPFObjNameChar returns true if char may not appear in
|
// invalidBPFObjNameChar returns true if char may not appear in
|
||||||
// a BPF object name.
|
// a BPF object name.
|
||||||
@ -45,21 +37,6 @@ func invalidBPFObjNameChar(char rune) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type bpfMapCreateAttr struct {
|
|
||||||
mapType MapType
|
|
||||||
keySize uint32
|
|
||||||
valueSize uint32
|
|
||||||
maxEntries uint32
|
|
||||||
flags uint32
|
|
||||||
innerMapFd uint32 // since 4.12 56f668dfe00d
|
|
||||||
numaNode uint32 // since 4.14 96eabe7a40aa
|
|
||||||
mapName bpfObjName // since 4.15 ad5b177bd73f
|
|
||||||
mapIfIndex uint32
|
|
||||||
btfFd uint32
|
|
||||||
btfKeyTypeID btf.TypeID
|
|
||||||
btfValueTypeID btf.TypeID
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfMapOpAttr struct {
|
type bpfMapOpAttr struct {
|
||||||
mapFd uint32
|
mapFd uint32
|
||||||
padding uint32
|
padding uint32
|
||||||
@ -86,7 +63,7 @@ type bpfMapInfo struct {
|
|||||||
value_size uint32
|
value_size uint32
|
||||||
max_entries uint32
|
max_entries uint32
|
||||||
map_flags uint32
|
map_flags uint32
|
||||||
name bpfObjName // since 4.15 ad5b177bd73f
|
name internal.BPFObjName // since 4.15 ad5b177bd73f
|
||||||
ifindex uint32 // since 4.16 52775b33bb50
|
ifindex uint32 // since 4.16 52775b33bb50
|
||||||
btf_vmlinux_value_type_id uint32 // since 5.6 85d33df357b6
|
btf_vmlinux_value_type_id uint32 // since 5.6 85d33df357b6
|
||||||
netns_dev uint64 // since 4.16 52775b33bb50
|
netns_dev uint64 // since 4.16 52775b33bb50
|
||||||
@ -106,7 +83,7 @@ type bpfProgLoadAttr struct {
|
|||||||
logBuf internal.Pointer
|
logBuf internal.Pointer
|
||||||
kernelVersion uint32 // since 4.1 2541517c32be
|
kernelVersion uint32 // since 4.1 2541517c32be
|
||||||
progFlags uint32 // since 4.11 e07b98d9bffe
|
progFlags uint32 // since 4.11 e07b98d9bffe
|
||||||
progName bpfObjName // since 4.15 067cae47771c
|
progName internal.BPFObjName // since 4.15 067cae47771c
|
||||||
progIfIndex uint32 // since 4.15 1f6f4cb7ba21
|
progIfIndex uint32 // since 4.15 1f6f4cb7ba21
|
||||||
expectedAttachType AttachType // since 4.17 5e43f899b03a
|
expectedAttachType AttachType // since 4.17 5e43f899b03a
|
||||||
progBTFFd uint32
|
progBTFFd uint32
|
||||||
@ -132,7 +109,7 @@ type bpfProgInfo struct {
|
|||||||
created_by_uid uint32
|
created_by_uid uint32
|
||||||
nr_map_ids uint32
|
nr_map_ids uint32
|
||||||
map_ids internal.Pointer
|
map_ids internal.Pointer
|
||||||
name bpfObjName // since 4.15 067cae47771c
|
name internal.BPFObjName // since 4.15 067cae47771c
|
||||||
ifindex uint32
|
ifindex uint32
|
||||||
gpl_compatible uint32
|
gpl_compatible uint32
|
||||||
netns_dev uint64
|
netns_dev uint64
|
||||||
@ -188,7 +165,7 @@ func bpfProgLoad(attr *bpfProgLoadAttr) (*internal.FD, error) {
|
|||||||
fd, err := internal.BPF(internal.BPF_PROG_LOAD, unsafe.Pointer(attr), unsafe.Sizeof(*attr))
|
fd, err := internal.BPF(internal.BPF_PROG_LOAD, unsafe.Pointer(attr), unsafe.Sizeof(*attr))
|
||||||
// As of ~4.20 the verifier can be interrupted by a signal,
|
// As of ~4.20 the verifier can be interrupted by a signal,
|
||||||
// and returns EAGAIN in that case.
|
// and returns EAGAIN in that case.
|
||||||
if err == unix.EAGAIN {
|
if errors.Is(err, unix.EAGAIN) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,23 +182,14 @@ func bpfProgTestRun(attr *bpfProgTestRunAttr) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func bpfMapCreate(attr *bpfMapCreateAttr) (*internal.FD, error) {
|
|
||||||
fd, err := internal.BPF(internal.BPF_MAP_CREATE, unsafe.Pointer(attr), unsafe.Sizeof(*attr))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return internal.NewFD(uint32(fd)), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var haveNestedMaps = internal.FeatureTest("nested maps", "4.12", func() error {
|
var haveNestedMaps = internal.FeatureTest("nested maps", "4.12", func() error {
|
||||||
_, err := bpfMapCreate(&bpfMapCreateAttr{
|
_, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{
|
||||||
mapType: ArrayOfMaps,
|
MapType: uint32(ArrayOfMaps),
|
||||||
keySize: 4,
|
KeySize: 4,
|
||||||
valueSize: 4,
|
ValueSize: 4,
|
||||||
maxEntries: 1,
|
MaxEntries: 1,
|
||||||
// Invalid file descriptor.
|
// Invalid file descriptor.
|
||||||
innerMapFd: ^uint32(0),
|
InnerMapFd: ^uint32(0),
|
||||||
})
|
})
|
||||||
if errors.Is(err, unix.EINVAL) {
|
if errors.Is(err, unix.EINVAL) {
|
||||||
return internal.ErrNotSupported
|
return internal.ErrNotSupported
|
||||||
@ -235,12 +203,44 @@ var haveNestedMaps = internal.FeatureTest("nested maps", "4.12", func() error {
|
|||||||
var haveMapMutabilityModifiers = internal.FeatureTest("read- and write-only maps", "5.2", func() error {
|
var haveMapMutabilityModifiers = internal.FeatureTest("read- and write-only maps", "5.2", func() error {
|
||||||
// This checks BPF_F_RDONLY_PROG and BPF_F_WRONLY_PROG. Since
|
// This checks BPF_F_RDONLY_PROG and BPF_F_WRONLY_PROG. Since
|
||||||
// BPF_MAP_FREEZE appeared in 5.2 as well we don't do a separate check.
|
// BPF_MAP_FREEZE appeared in 5.2 as well we don't do a separate check.
|
||||||
m, err := bpfMapCreate(&bpfMapCreateAttr{
|
m, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{
|
||||||
mapType: Array,
|
MapType: uint32(Array),
|
||||||
keySize: 4,
|
KeySize: 4,
|
||||||
valueSize: 4,
|
ValueSize: 4,
|
||||||
maxEntries: 1,
|
MaxEntries: 1,
|
||||||
flags: unix.BPF_F_RDONLY_PROG,
|
Flags: unix.BPF_F_RDONLY_PROG,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return internal.ErrNotSupported
|
||||||
|
}
|
||||||
|
_ = m.Close()
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
var haveMmapableMaps = internal.FeatureTest("mmapable maps", "5.5", func() error {
|
||||||
|
// This checks BPF_F_MMAPABLE, which appeared in 5.5 for array maps.
|
||||||
|
m, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{
|
||||||
|
MapType: uint32(Array),
|
||||||
|
KeySize: 4,
|
||||||
|
ValueSize: 4,
|
||||||
|
MaxEntries: 1,
|
||||||
|
Flags: unix.BPF_F_MMAPABLE,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return internal.ErrNotSupported
|
||||||
|
}
|
||||||
|
_ = m.Close()
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
var haveInnerMaps = internal.FeatureTest("inner maps", "5.10", func() error {
|
||||||
|
// This checks BPF_F_INNER_MAP, which appeared in 5.10.
|
||||||
|
m, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{
|
||||||
|
MapType: uint32(Array),
|
||||||
|
KeySize: 4,
|
||||||
|
ValueSize: 4,
|
||||||
|
MaxEntries: 1,
|
||||||
|
Flags: unix.BPF_F_INNER_MAP,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return internal.ErrNotSupported
|
return internal.ErrNotSupported
|
||||||
@ -329,7 +329,7 @@ func objGetNextID(cmd internal.BPFCmd, start uint32) (uint32, error) {
|
|||||||
startID: start,
|
startID: start,
|
||||||
}
|
}
|
||||||
_, err := internal.BPF(cmd, unsafe.Pointer(&attr), unsafe.Sizeof(attr))
|
_, err := internal.BPF(cmd, unsafe.Pointer(&attr), unsafe.Sizeof(attr))
|
||||||
return attr.nextID, wrapObjError(err)
|
return attr.nextID, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func bpfMapBatch(cmd internal.BPFCmd, m *internal.FD, inBatch, outBatch, keys, values internal.Pointer, count uint32, opts *BatchOptions) (uint32, error) {
|
func bpfMapBatch(cmd internal.BPFCmd, m *internal.FD, inBatch, outBatch, keys, values internal.Pointer, count uint32, opts *BatchOptions) (uint32, error) {
|
||||||
@ -355,32 +355,21 @@ func bpfMapBatch(cmd internal.BPFCmd, m *internal.FD, inBatch, outBatch, keys, v
|
|||||||
return attr.count, wrapMapError(err)
|
return attr.count, wrapMapError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func wrapObjError(err error) error {
|
|
||||||
if err == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if errors.Is(err, unix.ENOENT) {
|
|
||||||
return fmt.Errorf("%w", ErrNotExist)
|
|
||||||
}
|
|
||||||
|
|
||||||
return errors.New(err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func wrapMapError(err error) error {
|
func wrapMapError(err error) error {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if errors.Is(err, unix.ENOENT) {
|
if errors.Is(err, unix.ENOENT) {
|
||||||
return ErrKeyNotExist
|
return internal.SyscallError(ErrKeyNotExist, unix.ENOENT)
|
||||||
}
|
}
|
||||||
|
|
||||||
if errors.Is(err, unix.EEXIST) {
|
if errors.Is(err, unix.EEXIST) {
|
||||||
return ErrKeyExist
|
return internal.SyscallError(ErrKeyExist, unix.EEXIST)
|
||||||
}
|
}
|
||||||
|
|
||||||
if errors.Is(err, unix.ENOTSUPP) {
|
if errors.Is(err, unix.ENOTSUPP) {
|
||||||
return ErrNotSupported
|
return internal.SyscallError(ErrNotSupported, unix.ENOTSUPP)
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
@ -417,15 +406,15 @@ func bpfGetMapInfoByFD(fd *internal.FD) (*bpfMapInfo, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var haveObjName = internal.FeatureTest("object names", "4.15", func() error {
|
var haveObjName = internal.FeatureTest("object names", "4.15", func() error {
|
||||||
attr := bpfMapCreateAttr{
|
attr := internal.BPFMapCreateAttr{
|
||||||
mapType: Array,
|
MapType: uint32(Array),
|
||||||
keySize: 4,
|
KeySize: 4,
|
||||||
valueSize: 4,
|
ValueSize: 4,
|
||||||
maxEntries: 1,
|
MaxEntries: 1,
|
||||||
mapName: newBPFObjName("feature_test"),
|
MapName: internal.NewBPFObjName("feature_test"),
|
||||||
}
|
}
|
||||||
|
|
||||||
fd, err := bpfMapCreate(&attr)
|
fd, err := internal.BPFMapCreate(&attr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return internal.ErrNotSupported
|
return internal.ErrNotSupported
|
||||||
}
|
}
|
||||||
@ -439,15 +428,15 @@ var objNameAllowsDot = internal.FeatureTest("dot in object names", "5.2", func()
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
attr := bpfMapCreateAttr{
|
attr := internal.BPFMapCreateAttr{
|
||||||
mapType: Array,
|
MapType: uint32(Array),
|
||||||
keySize: 4,
|
KeySize: 4,
|
||||||
valueSize: 4,
|
ValueSize: 4,
|
||||||
maxEntries: 1,
|
MaxEntries: 1,
|
||||||
mapName: newBPFObjName(".test"),
|
MapName: internal.NewBPFObjName(".test"),
|
||||||
}
|
}
|
||||||
|
|
||||||
fd, err := bpfMapCreate(&attr)
|
fd, err := internal.BPFMapCreate(&attr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return internal.ErrNotSupported
|
return internal.ErrNotSupported
|
||||||
}
|
}
|
||||||
@ -458,14 +447,14 @@ var objNameAllowsDot = internal.FeatureTest("dot in object names", "5.2", func()
|
|||||||
|
|
||||||
var haveBatchAPI = internal.FeatureTest("map batch api", "5.6", func() error {
|
var haveBatchAPI = internal.FeatureTest("map batch api", "5.6", func() error {
|
||||||
var maxEntries uint32 = 2
|
var maxEntries uint32 = 2
|
||||||
attr := bpfMapCreateAttr{
|
attr := internal.BPFMapCreateAttr{
|
||||||
mapType: Hash,
|
MapType: uint32(Hash),
|
||||||
keySize: 4,
|
KeySize: 4,
|
||||||
valueSize: 4,
|
ValueSize: 4,
|
||||||
maxEntries: maxEntries,
|
MaxEntries: maxEntries,
|
||||||
}
|
}
|
||||||
|
|
||||||
fd, err := bpfMapCreate(&attr)
|
fd, err := internal.BPFMapCreate(&attr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return internal.ErrNotSupported
|
return internal.ErrNotSupported
|
||||||
}
|
}
|
||||||
@ -487,5 +476,5 @@ func bpfObjGetFDByID(cmd internal.BPFCmd, id uint32) (*internal.FD, error) {
|
|||||||
id: id,
|
id: id,
|
||||||
}
|
}
|
||||||
ptr, err := internal.BPF(cmd, unsafe.Pointer(&attr), unsafe.Sizeof(attr))
|
ptr, err := internal.BPF(cmd, unsafe.Pointer(&attr), unsafe.Sizeof(attr))
|
||||||
return internal.NewFD(uint32(ptr)), wrapObjError(err)
|
return internal.NewFD(uint32(ptr)), err
|
||||||
}
|
}
|
||||||
|
4
vendor/github.com/cilium/ebpf/types.go
generated
vendored
4
vendor/github.com/cilium/ebpf/types.go
generated
vendored
@ -85,6 +85,10 @@ const (
|
|||||||
SkStorage
|
SkStorage
|
||||||
// DevMapHash - Hash-based indexing scheme for references to network devices.
|
// DevMapHash - Hash-based indexing scheme for references to network devices.
|
||||||
DevMapHash
|
DevMapHash
|
||||||
|
StructOpts
|
||||||
|
RingBuf
|
||||||
|
InodeStorage
|
||||||
|
TaskStorage
|
||||||
)
|
)
|
||||||
|
|
||||||
// hasPerCPUValue returns true if the Map stores a value per CPU.
|
// hasPerCPUValue returns true if the Map stores a value per CPU.
|
||||||
|
8
vendor/github.com/cilium/ebpf/types_string.go
generated
vendored
8
vendor/github.com/cilium/ebpf/types_string.go
generated
vendored
@ -34,11 +34,15 @@ func _() {
|
|||||||
_ = x[Stack-23]
|
_ = x[Stack-23]
|
||||||
_ = x[SkStorage-24]
|
_ = x[SkStorage-24]
|
||||||
_ = x[DevMapHash-25]
|
_ = x[DevMapHash-25]
|
||||||
|
_ = x[StructOpts-26]
|
||||||
|
_ = x[RingBuf-27]
|
||||||
|
_ = x[InodeStorage-28]
|
||||||
|
_ = x[TaskStorage-29]
|
||||||
}
|
}
|
||||||
|
|
||||||
const _MapType_name = "UnspecifiedMapHashArrayProgramArrayPerfEventArrayPerCPUHashPerCPUArrayStackTraceCGroupArrayLRUHashLRUCPUHashLPMTrieArrayOfMapsHashOfMapsDevMapSockMapCPUMapXSKMapSockHashCGroupStorageReusePortSockArrayPerCPUCGroupStorageQueueStackSkStorageDevMapHash"
|
const _MapType_name = "UnspecifiedMapHashArrayProgramArrayPerfEventArrayPerCPUHashPerCPUArrayStackTraceCGroupArrayLRUHashLRUCPUHashLPMTrieArrayOfMapsHashOfMapsDevMapSockMapCPUMapXSKMapSockHashCGroupStorageReusePortSockArrayPerCPUCGroupStorageQueueStackSkStorageDevMapHashStructOptsRingBufInodeStorageTaskStorage"
|
||||||
|
|
||||||
var _MapType_index = [...]uint8{0, 14, 18, 23, 35, 49, 59, 70, 80, 91, 98, 108, 115, 126, 136, 142, 149, 155, 161, 169, 182, 200, 219, 224, 229, 238, 248}
|
var _MapType_index = [...]uint16{0, 14, 18, 23, 35, 49, 59, 70, 80, 91, 98, 108, 115, 126, 136, 142, 149, 155, 161, 169, 182, 200, 219, 224, 229, 238, 248, 258, 265, 277, 288}
|
||||||
|
|
||||||
func (i MapType) String() string {
|
func (i MapType) String() string {
|
||||||
if i >= MapType(len(_MapType_index)-1) {
|
if i >= MapType(len(_MapType_index)-1) {
|
||||||
|
88
vendor/github.com/opencontainers/runc/libcontainer/user/user.go
generated
vendored
88
vendor/github.com/opencontainers/runc/libcontainer/user/user.go
generated
vendored
@ -2,6 +2,7 @@ package user
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@ -55,11 +56,11 @@ type IDMap struct {
|
|||||||
Count int64
|
Count int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseLine(line string, v ...interface{}) {
|
func parseLine(line []byte, v ...interface{}) {
|
||||||
parseParts(strings.Split(line, ":"), v...)
|
parseParts(bytes.Split(line, []byte(":")), v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseParts(parts []string, v ...interface{}) {
|
func parseParts(parts [][]byte, v ...interface{}) {
|
||||||
if len(parts) == 0 {
|
if len(parts) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -75,16 +76,16 @@ func parseParts(parts []string, v ...interface{}) {
|
|||||||
// This is legit.
|
// This is legit.
|
||||||
switch e := v[i].(type) {
|
switch e := v[i].(type) {
|
||||||
case *string:
|
case *string:
|
||||||
*e = p
|
*e = string(p)
|
||||||
case *int:
|
case *int:
|
||||||
// "numbers", with conversion errors ignored because of some misbehaving configuration files.
|
// "numbers", with conversion errors ignored because of some misbehaving configuration files.
|
||||||
*e, _ = strconv.Atoi(p)
|
*e, _ = strconv.Atoi(string(p))
|
||||||
case *int64:
|
case *int64:
|
||||||
*e, _ = strconv.ParseInt(p, 10, 64)
|
*e, _ = strconv.ParseInt(string(p), 10, 64)
|
||||||
case *[]string:
|
case *[]string:
|
||||||
// Comma-separated lists.
|
// Comma-separated lists.
|
||||||
if p != "" {
|
if len(p) != 0 {
|
||||||
*e = strings.Split(p, ",")
|
*e = strings.Split(string(p), ",")
|
||||||
} else {
|
} else {
|
||||||
*e = []string{}
|
*e = []string{}
|
||||||
}
|
}
|
||||||
@ -128,8 +129,8 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
line := strings.TrimSpace(s.Text())
|
line := bytes.TrimSpace(s.Bytes())
|
||||||
if line == "" {
|
if len(line) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,15 +180,53 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) {
|
|||||||
if r == nil {
|
if r == nil {
|
||||||
return nil, fmt.Errorf("nil source for group-formatted data")
|
return nil, fmt.Errorf("nil source for group-formatted data")
|
||||||
}
|
}
|
||||||
|
rd := bufio.NewReader(r)
|
||||||
|
out := []Group{}
|
||||||
|
|
||||||
|
// Read the file line-by-line.
|
||||||
|
for {
|
||||||
var (
|
var (
|
||||||
s = bufio.NewScanner(r)
|
isPrefix bool
|
||||||
out = []Group{}
|
wholeLine []byte
|
||||||
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
for s.Scan() {
|
// Read the next line. We do so in chunks (as much as reader's
|
||||||
text := s.Text()
|
// buffer is able to keep), check if we read enough columns
|
||||||
if text == "" {
|
// already on each step and store final result in wholeLine.
|
||||||
|
for {
|
||||||
|
var line []byte
|
||||||
|
line, isPrefix, err = rd.ReadLine()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
// We should return no error if EOF is reached
|
||||||
|
// without a match.
|
||||||
|
if err == io.EOF { //nolint:errorlint // comparison with io.EOF is legit, https://github.com/polyfloyd/go-errorlint/pull/12
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Simple common case: line is short enough to fit in a
|
||||||
|
// single reader's buffer.
|
||||||
|
if !isPrefix && len(wholeLine) == 0 {
|
||||||
|
wholeLine = line
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
wholeLine = append(wholeLine, line...)
|
||||||
|
|
||||||
|
// Check if we read the whole line already.
|
||||||
|
if !isPrefix {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// There's no spec for /etc/passwd or /etc/group, but we try to follow
|
||||||
|
// the same rules as the glibc parser, which allows comments and blank
|
||||||
|
// space at the beginning of a line.
|
||||||
|
wholeLine = bytes.TrimSpace(wholeLine)
|
||||||
|
if len(wholeLine) == 0 || wholeLine[0] == '#' {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,17 +236,12 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) {
|
|||||||
// root:x:0:root
|
// root:x:0:root
|
||||||
// adm:x:4:root,adm,daemon
|
// adm:x:4:root,adm,daemon
|
||||||
p := Group{}
|
p := Group{}
|
||||||
parseLine(text, &p.Name, &p.Pass, &p.Gid, &p.List)
|
parseLine(wholeLine, &p.Name, &p.Pass, &p.Gid, &p.List)
|
||||||
|
|
||||||
if filter == nil || filter(p) {
|
if filter == nil || filter(p) {
|
||||||
out = append(out, p)
|
out = append(out, p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := s.Err(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return out, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExecUser struct {
|
type ExecUser struct {
|
||||||
@ -278,7 +312,7 @@ func GetExecUser(userSpec string, defaults *ExecUser, passwd, group io.Reader) (
|
|||||||
|
|
||||||
// Allow for userArg to have either "user" syntax, or optionally "user:group" syntax
|
// Allow for userArg to have either "user" syntax, or optionally "user:group" syntax
|
||||||
var userArg, groupArg string
|
var userArg, groupArg string
|
||||||
parseLine(userSpec, &userArg, &groupArg)
|
parseLine([]byte(userSpec), &userArg, &groupArg)
|
||||||
|
|
||||||
// Convert userArg and groupArg to be numeric, so we don't have to execute
|
// Convert userArg and groupArg to be numeric, so we don't have to execute
|
||||||
// Atoi *twice* for each iteration over lines.
|
// Atoi *twice* for each iteration over lines.
|
||||||
@ -496,8 +530,8 @@ func ParseSubIDFilter(r io.Reader, filter func(SubID) bool) ([]SubID, error) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
line := strings.TrimSpace(s.Text())
|
line := bytes.TrimSpace(s.Bytes())
|
||||||
if line == "" {
|
if len(line) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -549,14 +583,14 @@ func ParseIDMapFilter(r io.Reader, filter func(IDMap) bool) ([]IDMap, error) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
line := strings.TrimSpace(s.Text())
|
line := bytes.TrimSpace(s.Bytes())
|
||||||
if line == "" {
|
if len(line) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// see: man 7 user_namespaces
|
// see: man 7 user_namespaces
|
||||||
p := IDMap{}
|
p := IDMap{}
|
||||||
parseParts(strings.Fields(line), &p.ID, &p.ParentID, &p.Count)
|
parseParts(bytes.Fields(line), &p.ID, &p.ParentID, &p.Count)
|
||||||
|
|
||||||
if filter == nil || filter(p) {
|
if filter == nil || filter(p) {
|
||||||
out = append(out, p)
|
out = append(out, p)
|
||||||
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -47,7 +47,7 @@ github.com/beorn7/perks/quantile
|
|||||||
github.com/bits-and-blooms/bitset
|
github.com/bits-and-blooms/bitset
|
||||||
# github.com/cespare/xxhash/v2 v2.1.1
|
# github.com/cespare/xxhash/v2 v2.1.1
|
||||||
github.com/cespare/xxhash/v2
|
github.com/cespare/xxhash/v2
|
||||||
# github.com/cilium/ebpf v0.6.1
|
# github.com/cilium/ebpf v0.6.2
|
||||||
github.com/cilium/ebpf
|
github.com/cilium/ebpf
|
||||||
github.com/cilium/ebpf/asm
|
github.com/cilium/ebpf/asm
|
||||||
github.com/cilium/ebpf/internal
|
github.com/cilium/ebpf/internal
|
||||||
@ -269,7 +269,7 @@ github.com/opencontainers/go-digest/digestset
|
|||||||
github.com/opencontainers/image-spec/identity
|
github.com/opencontainers/image-spec/identity
|
||||||
github.com/opencontainers/image-spec/specs-go
|
github.com/opencontainers/image-spec/specs-go
|
||||||
github.com/opencontainers/image-spec/specs-go/v1
|
github.com/opencontainers/image-spec/specs-go/v1
|
||||||
# github.com/opencontainers/runc v1.0.0
|
# github.com/opencontainers/runc v1.0.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/opencontainers/runc/libcontainer/user
|
github.com/opencontainers/runc/libcontainer/user
|
||||||
# github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
|
# github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
|
||||||
|
Loading…
Reference in New Issue
Block a user