go.mod: runc v1.0.1
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
		
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -39,7 +39,7 @@ require ( | ||||
| 	github.com/moby/sys/symlink v0.1.0 | ||||
| 	github.com/opencontainers/go-digest v1.0.0 | ||||
| 	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/selinux v1.8.2 | ||||
| 	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/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.6.1 h1:n6ZUOkSFi6OwcMeTCFaDQx2Onx2rEikQo69315MNbdc= | ||||
| github.com/cilium/ebpf v0.6.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= | ||||
| github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI= | ||||
| github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= | ||||
| 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-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/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/runc v1.0.0 h1:QOhAQAYUlKeofuyeKdR6ITvOnXLPbEAjPMjz9wCUXcU= | ||||
| github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA= | ||||
| github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs= | ||||
| 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.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= | ||||
|   | ||||
| @@ -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.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= | ||||
| 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.1/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= | ||||
| github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI= | ||||
| github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= | ||||
| 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-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/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/runc v1.0.0 h1:QOhAQAYUlKeofuyeKdR6ITvOnXLPbEAjPMjz9wCUXcU= | ||||
| github.com/opencontainers/runc v1.0.0/go.mod h1:MU2S3KEB2ZExnhnAQYbwjdYV6HwKtDlNbA2Z2OeNDeA= | ||||
| github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs= | ||||
| 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.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= | ||||
|   | ||||
							
								
								
									
										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 | ||||
| 	FnSendSignal | ||||
| 	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. | ||||
|   | ||||
							
								
								
									
										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[FnSendSignal-109] | ||||
| 	_ = 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 { | ||||
| 	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}, | ||||
| 		"flow_dissector":        {FlowDissector, AttachFlowDissector, 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}, | ||||
| 		"fmod_ret.s/":           {Tracing, AttachModifyReturn, 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 { | ||||
| 		switch { | ||||
| 		case opts.StripFuncLinkage && raw.Kind() == kindFunc: | ||||
| 			raw.SetLinkage(linkageStatic) | ||||
| 			raw.SetLinkage(StaticFunc) | ||||
| 		} | ||||
|  | ||||
| 		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.SizeType = 1 // aka FuncProto | ||||
| 	types.Func.NameOff = 1 | ||||
| 	types.Func.SetLinkage(linkageGlobal) | ||||
| 	types.Func.SetLinkage(GlobalFunc) | ||||
|  | ||||
| 	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" | ||||
| ) | ||||
|  | ||||
| //go:generate stringer -linecomment -output=btf_types_string.go -type=FuncLinkage,VarLinkage | ||||
|  | ||||
| // btfKind describes a Type. | ||||
| type btfKind uint8 | ||||
|  | ||||
| @@ -31,14 +33,23 @@ const ( | ||||
| 	kindDatasec | ||||
| ) | ||||
|  | ||||
| // btfFuncLinkage describes BTF function linkage metadata. | ||||
| type btfFuncLinkage uint8 | ||||
| // FuncLinkage describes BTF function linkage metadata. | ||||
| type FuncLinkage int | ||||
|  | ||||
| // Equivalent of enum btf_func_linkage. | ||||
| const ( | ||||
| 	linkageStatic btfFuncLinkage = iota | ||||
| 	linkageGlobal | ||||
| 	// linkageExtern // Currently unused in libbpf. | ||||
| 	StaticFunc FuncLinkage = iota // static | ||||
| 	GlobalFunc                    // global | ||||
| 	ExternFunc                    // extern | ||||
| ) | ||||
|  | ||||
| // VarLinkage describes BTF variable linkage metadata. | ||||
| type VarLinkage int | ||||
|  | ||||
| const ( | ||||
| 	StaticVar VarLinkage = iota // static | ||||
| 	GlobalVar                   // global | ||||
| 	ExternVar                   // extern | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| @@ -144,11 +155,11 @@ func (bt *btfType) KindFlag() bool { | ||||
| 	return bt.info(btfTypeKindFlagMask, btfTypeKindFlagShift) == 1 | ||||
| } | ||||
|  | ||||
| func (bt *btfType) Linkage() btfFuncLinkage { | ||||
| 	return btfFuncLinkage(bt.info(btfTypeVlenMask, btfTypeVlenShift)) | ||||
| func (bt *btfType) Linkage() FuncLinkage { | ||||
| 	return FuncLinkage(bt.info(btfTypeVlenMask, btfTypeVlenShift)) | ||||
| } | ||||
|  | ||||
| func (bt *btfType) SetLinkage(linkage btfFuncLinkage) { | ||||
| func (bt *btfType) SetLinkage(linkage FuncLinkage) { | ||||
| 	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]] | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/github.com/cilium/ebpf/internal/btf/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/cilium/ebpf/internal/btf/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -380,11 +380,12 @@ func (r *Restrict) copy() Type { | ||||
| type Func struct { | ||||
| 	TypeID | ||||
| 	Name | ||||
| 	Type Type | ||||
| 	Type    Type | ||||
| 	Linkage FuncLinkage | ||||
| } | ||||
|  | ||||
| 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) } | ||||
| @@ -433,12 +434,12 @@ type FuncParam struct { | ||||
| type Var struct { | ||||
| 	TypeID | ||||
| 	Name | ||||
| 	Type Type | ||||
| 	Type    Type | ||||
| 	Linkage VarLinkage | ||||
| } | ||||
|  | ||||
| func (v *Var) String() string { | ||||
| 	// TODO: Linkage | ||||
| 	return fmt.Sprintf("var#%d[%q]", v.TypeID, v.Name) | ||||
| 	return fmt.Sprintf("var#%d[%s %q]", v.TypeID, v.Linkage, v.Name) | ||||
| } | ||||
|  | ||||
| func (v *Var) walk(tdq *typeDeque) { tdq.push(&v.Type) } | ||||
| @@ -803,7 +804,7 @@ func inflateRawTypes(rawTypes []rawType, rawStrings stringTable) (types []Type, | ||||
| 			typ = restrict | ||||
|  | ||||
| 		case kindFunc: | ||||
| 			fn := &Func{id, name, nil} | ||||
| 			fn := &Func{id, name, nil, raw.Linkage()} | ||||
| 			fixup(raw.Type(), kindFuncProto, &fn.Type) | ||||
| 			typ = fn | ||||
|  | ||||
| @@ -828,7 +829,8 @@ func inflateRawTypes(rawTypes []rawType, rawStrings stringTable) (types []Type, | ||||
| 			typ = fp | ||||
|  | ||||
| 		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) | ||||
| 			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" | ||||
| 	"path/filepath" | ||||
| 	"runtime" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"github.com/cilium/ebpf/internal/unix" | ||||
| @@ -61,7 +62,7 @@ func BPF(cmd BPFCmd, attr unsafe.Pointer, size uintptr) (uintptr, error) { | ||||
|  | ||||
| 	var err error | ||||
| 	if errNo != 0 { | ||||
| 		err = errNo | ||||
| 		err = wrappedErrno{errNo} | ||||
| 	} | ||||
|  | ||||
| 	return r1, err | ||||
| @@ -178,3 +179,67 @@ func BPFObjGetInfoByFD(fd *FD, info unsafe.Pointer, size uintptr) error { | ||||
| 	} | ||||
| 	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_WRONLY_PROG        = linux.BPF_F_WRONLY_PROG | ||||
| 	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_TAG_SIZE             = linux.BPF_TAG_SIZE | ||||
| 	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_WRONLY_PROG        = 0 | ||||
| 	BPF_F_SLEEPABLE          = 0 | ||||
| 	BPF_F_MMAPABLE           = 0 | ||||
| 	BPF_F_INNER_MAP          = 0 | ||||
| 	BPF_OBJ_NAME_LEN         = 0x10 | ||||
| 	BPF_TAG_SIZE             = 0x8 | ||||
| 	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 ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"github.com/cilium/ebpf" | ||||
| 	"github.com/cilium/ebpf/internal" | ||||
| ) | ||||
|  | ||||
| type IterOptions struct { | ||||
| @@ -15,19 +17,45 @@ type IterOptions struct { | ||||
| 	// AttachTo requires the kernel to include BTF of itself, | ||||
| 	// and it to be compiled with a recent pahole (>= 1.16). | ||||
| 	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. | ||||
| func AttachIter(opts IterOptions) (*Iter, error) { | ||||
| 	link, err := AttachRawLink(RawLinkOptions{ | ||||
| 		Program: opts.Program, | ||||
| 		Attach:  ebpf.AttachTraceIter, | ||||
| 	}) | ||||
| 	if err := haveBPFLink(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	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 { | ||||
| 		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. | ||||
| @@ -65,3 +93,8 @@ func (it *Iter) Open() (io.ReadCloser, error) { | ||||
|  | ||||
| 	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 | ||||
| } | ||||
|  | ||||
| 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 { | ||||
| 	linkFd    uint32 | ||||
| 	newProgFd uint32 | ||||
|   | ||||
							
								
								
									
										66
									
								
								vendor/github.com/cilium/ebpf/link/uprobe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								vendor/github.com/cilium/ebpf/link/uprobe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -35,6 +35,14 @@ type Executable struct { | ||||
| 	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: | ||||
| // | ||||
| //	OpenExecutable("/bin/bash") | ||||
| @@ -78,6 +86,10 @@ func (ex *Executable) addSymbols(f func() ([]elf.Symbol, error)) error { | ||||
| 		return err | ||||
| 	} | ||||
| 	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 | ||||
| 	} | ||||
| 	return nil | ||||
| @@ -95,13 +107,18 @@ func (ex *Executable) symbol(symbol string) (*elf.Symbol, error) { | ||||
| // For example, /bin/bash::main(): | ||||
| // | ||||
| //  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 | ||||
| // system resources. Functions provided by shared libraries can currently not | ||||
| // be traced and will result in an ErrNotSupported. | ||||
| func (ex *Executable) Uprobe(symbol string, prog *ebpf.Program) (Link, error) { | ||||
| 	u, err := ex.uprobe(symbol, prog, false) | ||||
| func (ex *Executable) Uprobe(symbol string, prog *ebpf.Program, opts *UprobeOptions) (Link, error) { | ||||
| 	u, err := ex.uprobe(symbol, prog, opts, false) | ||||
| 	if err != nil { | ||||
| 		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(): | ||||
| // | ||||
| //  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 | ||||
| // system resources. Functions provided by shared libraries can currently not | ||||
| // be traced and will result in an ErrNotSupported. | ||||
| func (ex *Executable) Uretprobe(symbol string, prog *ebpf.Program) (Link, error) { | ||||
| 	u, err := ex.uprobe(symbol, prog, true) | ||||
| func (ex *Executable) Uretprobe(symbol string, prog *ebpf.Program, opts *UprobeOptions) (Link, error) { | ||||
| 	u, err := ex.uprobe(symbol, prog, opts, true) | ||||
| 	if err != nil { | ||||
| 		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. | ||||
| // 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 { | ||||
| 		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) | ||||
| 	} | ||||
|  | ||||
| 	sym, err := ex.symbol(symbol) | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("symbol '%s' not found in '%s': %w", symbol, ex.path, err) | ||||
| 	} | ||||
| 	var offset uint64 | ||||
| 	if opts != nil && opts.Offset != 0 { | ||||
| 		offset = opts.Offset | ||||
| 	} else { | ||||
| 		sym, err := ex.symbol(symbol) | ||||
| 		if err != nil { | ||||
| 			return nil, fmt.Errorf("symbol '%s' not found: %w", symbol, err) | ||||
| 		} | ||||
|  | ||||
| 	// Symbols with location 0 from section undef are shared library calls and | ||||
| 	// are relocated before the binary is executed. Dynamic linking is not | ||||
| 	// implemented by the library, so mark this as unsupported for now. | ||||
| 	if sym.Section == elf.SHN_UNDEF && sym.Value == 0 { | ||||
| 		return nil, fmt.Errorf("cannot resolve %s library call '%s': %w", ex.path, symbol, ErrNotSupported) | ||||
| 		// Symbols with location 0 from section undef are shared library calls and | ||||
| 		// are relocated before the binary is executed. Dynamic linking is not | ||||
| 		// implemented by the library, so mark this as unsupported for now. | ||||
| 		if sym.Section == elf.SHN_UNDEF && sym.Value == 0 { | ||||
| 			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. | ||||
| 	tp, err := pmuUprobe(sym.Name, ex.path, sym.Value, ret) | ||||
| 	tp, err := pmuUprobe(symbol, ex.path, offset, ret) | ||||
| 	if err == 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. | ||||
| 	tp, err = tracefsUprobe(uprobeSanitizedSymbol(sym.Name), ex.path, sym.Value, ret) | ||||
| 	tp, err = tracefsUprobe(uprobeSanitizedSymbol(symbol), ex.path, offset, ret) | ||||
| 	if err != nil { | ||||
| 		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) | ||||
| 		} | ||||
| 	} | ||||
| 	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{ | ||||
| 		mapType:    spec.Type, | ||||
| 		keySize:    spec.KeySize, | ||||
| 		valueSize:  spec.ValueSize, | ||||
| 		maxEntries: spec.MaxEntries, | ||||
| 		flags:      spec.Flags, | ||||
| 		numaNode:   spec.NumaNode, | ||||
| 	attr := internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(spec.Type), | ||||
| 		KeySize:    spec.KeySize, | ||||
| 		ValueSize:  spec.ValueSize, | ||||
| 		MaxEntries: spec.MaxEntries, | ||||
| 		Flags:      spec.Flags, | ||||
| 		NumaNode:   spec.NumaNode, | ||||
| 	} | ||||
|  | ||||
| 	if inner != nil { | ||||
| 		var err error | ||||
| 		attr.innerMapFd, err = inner.Value() | ||||
| 		attr.InnerMapFd, err = inner.Value() | ||||
| 		if err != nil { | ||||
| 			return nil, fmt.Errorf("map create: %w", err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if haveObjName() == nil { | ||||
| 		attr.mapName = newBPFObjName(spec.Name) | ||||
| 		attr.MapName = internal.NewBPFObjName(spec.Name) | ||||
| 	} | ||||
|  | ||||
| 	var btfDisabled bool | ||||
| @@ -347,13 +357,13 @@ func createMap(spec *MapSpec, inner *internal.FD, opts MapOptions, handles *hand | ||||
| 		} | ||||
|  | ||||
| 		if handle != nil { | ||||
| 			attr.btfFd = uint32(handle.FD()) | ||||
| 			attr.btfKeyTypeID = btf.MapKey(spec.BTF).ID() | ||||
| 			attr.btfValueTypeID = btf.MapValue(spec.BTF).ID() | ||||
| 			attr.BTFFd = uint32(handle.FD()) | ||||
| 			attr.BTFKeyTypeID = uint32(btf.MapKey(spec.BTF).ID()) | ||||
| 			attr.BTFValueTypeID = uint32(btf.MapValue(spec.BTF).ID()) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	fd, err := bpfMapCreate(&attr) | ||||
| 	fd, err := internal.BPFMapCreate(&attr) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, unix.EPERM) { | ||||
| 			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 { | ||||
| 		attr.progName = newBPFObjName(spec.Name) | ||||
| 		attr.progName = internal.NewBPFObjName(spec.Name) | ||||
| 	} | ||||
|  | ||||
| 	var err error | ||||
|   | ||||
							
								
								
									
										181
									
								
								vendor/github.com/cilium/ebpf/syscalls.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										181
									
								
								vendor/github.com/cilium/ebpf/syscalls.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,6 +3,7 @@ package ebpf | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"github.com/cilium/ebpf/internal" | ||||
| @@ -10,19 +11,10 @@ import ( | ||||
| 	"github.com/cilium/ebpf/internal/unix" | ||||
| ) | ||||
|  | ||||
| // Generic errors returned by BPF syscalls. | ||||
| var ErrNotExist = errors.New("requested object does not exist") | ||||
|  | ||||
| // 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 | ||||
| } | ||||
| // ErrNotExist is returned when loading a non-existing map or program. | ||||
| // | ||||
| // Deprecated: use os.ErrNotExist instead. | ||||
| var ErrNotExist = os.ErrNotExist | ||||
|  | ||||
| // invalidBPFObjNameChar returns true if char may not appear in | ||||
| // 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 { | ||||
| 	mapFd   uint32 | ||||
| 	padding uint32 | ||||
| @@ -86,10 +63,10 @@ type bpfMapInfo struct { | ||||
| 	value_size                uint32 | ||||
| 	max_entries               uint32 | ||||
| 	map_flags                 uint32 | ||||
| 	name                      bpfObjName // since 4.15 ad5b177bd73f | ||||
| 	ifindex                   uint32     // since 4.16 52775b33bb50 | ||||
| 	btf_vmlinux_value_type_id uint32     // since 5.6  85d33df357b6 | ||||
| 	netns_dev                 uint64     // since 4.16 52775b33bb50 | ||||
| 	name                      internal.BPFObjName // since 4.15 ad5b177bd73f | ||||
| 	ifindex                   uint32              // since 4.16 52775b33bb50 | ||||
| 	btf_vmlinux_value_type_id uint32              // since 5.6  85d33df357b6 | ||||
| 	netns_dev                 uint64              // since 4.16 52775b33bb50 | ||||
| 	netns_ino                 uint64 | ||||
| 	btf_id                    uint32 // since 4.18 78958fca7ead | ||||
| 	btf_key_type_id           uint32 // since 4.18 9b2cf328b2ec | ||||
| @@ -104,11 +81,11 @@ type bpfProgLoadAttr struct { | ||||
| 	logLevel           uint32 | ||||
| 	logSize            uint32 | ||||
| 	logBuf             internal.Pointer | ||||
| 	kernelVersion      uint32     // since 4.1  2541517c32be | ||||
| 	progFlags          uint32     // since 4.11 e07b98d9bffe | ||||
| 	progName           bpfObjName // since 4.15 067cae47771c | ||||
| 	progIfIndex        uint32     // since 4.15 1f6f4cb7ba21 | ||||
| 	expectedAttachType AttachType // since 4.17 5e43f899b03a | ||||
| 	kernelVersion      uint32              // since 4.1  2541517c32be | ||||
| 	progFlags          uint32              // since 4.11 e07b98d9bffe | ||||
| 	progName           internal.BPFObjName // since 4.15 067cae47771c | ||||
| 	progIfIndex        uint32              // since 4.15 1f6f4cb7ba21 | ||||
| 	expectedAttachType AttachType          // since 4.17 5e43f899b03a | ||||
| 	progBTFFd          uint32 | ||||
| 	funcInfoRecSize    uint32 | ||||
| 	funcInfo           internal.Pointer | ||||
| @@ -132,7 +109,7 @@ type bpfProgInfo struct { | ||||
| 	created_by_uid           uint32 | ||||
| 	nr_map_ids               uint32 | ||||
| 	map_ids                  internal.Pointer | ||||
| 	name                     bpfObjName // since 4.15 067cae47771c | ||||
| 	name                     internal.BPFObjName // since 4.15 067cae47771c | ||||
| 	ifindex                  uint32 | ||||
| 	gpl_compatible           uint32 | ||||
| 	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)) | ||||
| 		// As of ~4.20 the verifier can be interrupted by a signal, | ||||
| 		// and returns EAGAIN in that case. | ||||
| 		if err == unix.EAGAIN { | ||||
| 		if errors.Is(err, unix.EAGAIN) { | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| @@ -205,23 +182,14 @@ func bpfProgTestRun(attr *bpfProgTestRunAttr) error { | ||||
| 	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 { | ||||
| 	_, err := bpfMapCreate(&bpfMapCreateAttr{ | ||||
| 		mapType:    ArrayOfMaps, | ||||
| 		keySize:    4, | ||||
| 		valueSize:  4, | ||||
| 		maxEntries: 1, | ||||
| 	_, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(ArrayOfMaps), | ||||
| 		KeySize:    4, | ||||
| 		ValueSize:  4, | ||||
| 		MaxEntries: 1, | ||||
| 		// Invalid file descriptor. | ||||
| 		innerMapFd: ^uint32(0), | ||||
| 		InnerMapFd: ^uint32(0), | ||||
| 	}) | ||||
| 	if errors.Is(err, unix.EINVAL) { | ||||
| 		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 { | ||||
| 	// 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. | ||||
| 	m, err := bpfMapCreate(&bpfMapCreateAttr{ | ||||
| 		mapType:    Array, | ||||
| 		keySize:    4, | ||||
| 		valueSize:  4, | ||||
| 		maxEntries: 1, | ||||
| 		flags:      unix.BPF_F_RDONLY_PROG, | ||||
| 	m, err := internal.BPFMapCreate(&internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(Array), | ||||
| 		KeySize:    4, | ||||
| 		ValueSize:  4, | ||||
| 		MaxEntries: 1, | ||||
| 		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 { | ||||
| 		return internal.ErrNotSupported | ||||
| @@ -329,7 +329,7 @@ func objGetNextID(cmd internal.BPFCmd, start uint32) (uint32, error) { | ||||
| 		startID: start, | ||||
| 	} | ||||
| 	_, 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) { | ||||
| @@ -355,32 +355,21 @@ func bpfMapBatch(cmd internal.BPFCmd, m *internal.FD, inBatch, outBatch, keys, v | ||||
| 	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 { | ||||
| 	if err == nil { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	if errors.Is(err, unix.ENOENT) { | ||||
| 		return ErrKeyNotExist | ||||
| 		return internal.SyscallError(ErrKeyNotExist, unix.ENOENT) | ||||
| 	} | ||||
|  | ||||
| 	if errors.Is(err, unix.EEXIST) { | ||||
| 		return ErrKeyExist | ||||
| 		return internal.SyscallError(ErrKeyExist, unix.EEXIST) | ||||
| 	} | ||||
|  | ||||
| 	if errors.Is(err, unix.ENOTSUPP) { | ||||
| 		return ErrNotSupported | ||||
| 		return internal.SyscallError(ErrNotSupported, unix.ENOTSUPP) | ||||
| 	} | ||||
|  | ||||
| 	return err | ||||
| @@ -417,15 +406,15 @@ func bpfGetMapInfoByFD(fd *internal.FD) (*bpfMapInfo, error) { | ||||
| } | ||||
|  | ||||
| var haveObjName = internal.FeatureTest("object names", "4.15", func() error { | ||||
| 	attr := bpfMapCreateAttr{ | ||||
| 		mapType:    Array, | ||||
| 		keySize:    4, | ||||
| 		valueSize:  4, | ||||
| 		maxEntries: 1, | ||||
| 		mapName:    newBPFObjName("feature_test"), | ||||
| 	attr := internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(Array), | ||||
| 		KeySize:    4, | ||||
| 		ValueSize:  4, | ||||
| 		MaxEntries: 1, | ||||
| 		MapName:    internal.NewBPFObjName("feature_test"), | ||||
| 	} | ||||
|  | ||||
| 	fd, err := bpfMapCreate(&attr) | ||||
| 	fd, err := internal.BPFMapCreate(&attr) | ||||
| 	if err != nil { | ||||
| 		return internal.ErrNotSupported | ||||
| 	} | ||||
| @@ -439,15 +428,15 @@ var objNameAllowsDot = internal.FeatureTest("dot in object names", "5.2", func() | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	attr := bpfMapCreateAttr{ | ||||
| 		mapType:    Array, | ||||
| 		keySize:    4, | ||||
| 		valueSize:  4, | ||||
| 		maxEntries: 1, | ||||
| 		mapName:    newBPFObjName(".test"), | ||||
| 	attr := internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(Array), | ||||
| 		KeySize:    4, | ||||
| 		ValueSize:  4, | ||||
| 		MaxEntries: 1, | ||||
| 		MapName:    internal.NewBPFObjName(".test"), | ||||
| 	} | ||||
|  | ||||
| 	fd, err := bpfMapCreate(&attr) | ||||
| 	fd, err := internal.BPFMapCreate(&attr) | ||||
| 	if err != nil { | ||||
| 		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 maxEntries uint32 = 2 | ||||
| 	attr := bpfMapCreateAttr{ | ||||
| 		mapType:    Hash, | ||||
| 		keySize:    4, | ||||
| 		valueSize:  4, | ||||
| 		maxEntries: maxEntries, | ||||
| 	attr := internal.BPFMapCreateAttr{ | ||||
| 		MapType:    uint32(Hash), | ||||
| 		KeySize:    4, | ||||
| 		ValueSize:  4, | ||||
| 		MaxEntries: maxEntries, | ||||
| 	} | ||||
|  | ||||
| 	fd, err := bpfMapCreate(&attr) | ||||
| 	fd, err := internal.BPFMapCreate(&attr) | ||||
| 	if err != nil { | ||||
| 		return internal.ErrNotSupported | ||||
| 	} | ||||
| @@ -487,5 +476,5 @@ func bpfObjGetFDByID(cmd internal.BPFCmd, id uint32) (*internal.FD, error) { | ||||
| 		id: id, | ||||
| 	} | ||||
| 	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 | ||||
| 	// DevMapHash - Hash-based indexing scheme for references to network devices. | ||||
| 	DevMapHash | ||||
| 	StructOpts | ||||
| 	RingBuf | ||||
| 	InodeStorage | ||||
| 	TaskStorage | ||||
| ) | ||||
|  | ||||
| // 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[SkStorage-24] | ||||
| 	_ = 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 { | ||||
| 	if i >= MapType(len(_MapType_index)-1) { | ||||
|   | ||||
							
								
								
									
										92
									
								
								vendor/github.com/opencontainers/runc/libcontainer/user/user.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								vendor/github.com/opencontainers/runc/libcontainer/user/user.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ package user | ||||
|  | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"bytes" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| @@ -55,11 +56,11 @@ type IDMap struct { | ||||
| 	Count    int64 | ||||
| } | ||||
|  | ||||
| func parseLine(line string, v ...interface{}) { | ||||
| 	parseParts(strings.Split(line, ":"), v...) | ||||
| func parseLine(line []byte, v ...interface{}) { | ||||
| 	parseParts(bytes.Split(line, []byte(":")), v...) | ||||
| } | ||||
|  | ||||
| func parseParts(parts []string, v ...interface{}) { | ||||
| func parseParts(parts [][]byte, v ...interface{}) { | ||||
| 	if len(parts) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| @@ -75,16 +76,16 @@ func parseParts(parts []string, v ...interface{}) { | ||||
| 		// This is legit. | ||||
| 		switch e := v[i].(type) { | ||||
| 		case *string: | ||||
| 			*e = p | ||||
| 			*e = string(p) | ||||
| 		case *int: | ||||
| 			// "numbers", with conversion errors ignored because of some misbehaving configuration files. | ||||
| 			*e, _ = strconv.Atoi(p) | ||||
| 			*e, _ = strconv.Atoi(string(p)) | ||||
| 		case *int64: | ||||
| 			*e, _ = strconv.ParseInt(p, 10, 64) | ||||
| 			*e, _ = strconv.ParseInt(string(p), 10, 64) | ||||
| 		case *[]string: | ||||
| 			// Comma-separated lists. | ||||
| 			if p != "" { | ||||
| 				*e = strings.Split(p, ",") | ||||
| 			if len(p) != 0 { | ||||
| 				*e = strings.Split(string(p), ",") | ||||
| 			} else { | ||||
| 				*e = []string{} | ||||
| 			} | ||||
| @@ -128,8 +129,8 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) { | ||||
| 	) | ||||
|  | ||||
| 	for s.Scan() { | ||||
| 		line := strings.TrimSpace(s.Text()) | ||||
| 		if line == "" { | ||||
| 		line := bytes.TrimSpace(s.Bytes()) | ||||
| 		if len(line) == 0 { | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| @@ -179,15 +180,53 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { | ||||
| 	if r == nil { | ||||
| 		return nil, fmt.Errorf("nil source for group-formatted data") | ||||
| 	} | ||||
| 	rd := bufio.NewReader(r) | ||||
| 	out := []Group{} | ||||
|  | ||||
| 	var ( | ||||
| 		s   = bufio.NewScanner(r) | ||||
| 		out = []Group{} | ||||
| 	) | ||||
| 	// Read the file line-by-line. | ||||
| 	for { | ||||
| 		var ( | ||||
| 			isPrefix  bool | ||||
| 			wholeLine []byte | ||||
| 			err       error | ||||
| 		) | ||||
|  | ||||
| 	for s.Scan() { | ||||
| 		text := s.Text() | ||||
| 		if text == "" { | ||||
| 		// Read the next line. We do so in chunks (as much as reader's | ||||
| 		// buffer is able to keep), check if we read enough columns | ||||
| 		// 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 | ||||
| 		} | ||||
|  | ||||
| @@ -197,17 +236,12 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { | ||||
| 		//  root:x:0:root | ||||
| 		//  adm:x:4:root,adm,daemon | ||||
| 		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) { | ||||
| 			out = append(out, p) | ||||
| 		} | ||||
| 	} | ||||
| 	if err := s.Err(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return out, nil | ||||
| } | ||||
|  | ||||
| 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 | ||||
| 	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 | ||||
| 	// 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() { | ||||
| 		line := strings.TrimSpace(s.Text()) | ||||
| 		if line == "" { | ||||
| 		line := bytes.TrimSpace(s.Bytes()) | ||||
| 		if len(line) == 0 { | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| @@ -549,14 +583,14 @@ func ParseIDMapFilter(r io.Reader, filter func(IDMap) bool) ([]IDMap, error) { | ||||
| 	) | ||||
|  | ||||
| 	for s.Scan() { | ||||
| 		line := strings.TrimSpace(s.Text()) | ||||
| 		if line == "" { | ||||
| 		line := bytes.TrimSpace(s.Bytes()) | ||||
| 		if len(line) == 0 { | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		// see: man 7 user_namespaces | ||||
| 		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) { | ||||
| 			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/cespare/xxhash/v2 v2.1.1 | ||||
| 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/asm | ||||
| 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/specs-go | ||||
| github.com/opencontainers/image-spec/specs-go/v1 | ||||
| # github.com/opencontainers/runc v1.0.0 | ||||
| # github.com/opencontainers/runc v1.0.1 | ||||
| ## explicit | ||||
| github.com/opencontainers/runc/libcontainer/user | ||||
| # github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Akihiro Suda
					Akihiro Suda