func.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package asm
  2. //go:generate stringer -output func_string.go -type=BuiltinFunc
  3. // BuiltinFunc is a built-in eBPF function.
  4. type BuiltinFunc int32
  5. // eBPF built-in functions
  6. //
  7. // You can regenerate this list using the following gawk script:
  8. //
  9. // /FN\(.+\),/ {
  10. // match($1, /\((.+)\)/, r)
  11. // split(r[1], p, "_")
  12. // printf "Fn"
  13. // for (i in p) {
  14. // printf "%s%s", toupper(substr(p[i], 1, 1)), substr(p[i], 2)
  15. // }
  16. // print ""
  17. // }
  18. //
  19. // The script expects include/uapi/linux/bpf.h as it's input.
  20. const (
  21. FnUnspec BuiltinFunc = iota
  22. FnMapLookupElem
  23. FnMapUpdateElem
  24. FnMapDeleteElem
  25. FnProbeRead
  26. FnKtimeGetNs
  27. FnTracePrintk
  28. FnGetPrandomU32
  29. FnGetSmpProcessorId
  30. FnSkbStoreBytes
  31. FnL3CsumReplace
  32. FnL4CsumReplace
  33. FnTailCall
  34. FnCloneRedirect
  35. FnGetCurrentPidTgid
  36. FnGetCurrentUidGid
  37. FnGetCurrentComm
  38. FnGetCgroupClassid
  39. FnSkbVlanPush
  40. FnSkbVlanPop
  41. FnSkbGetTunnelKey
  42. FnSkbSetTunnelKey
  43. FnPerfEventRead
  44. FnRedirect
  45. FnGetRouteRealm
  46. FnPerfEventOutput
  47. FnSkbLoadBytes
  48. FnGetStackid
  49. FnCsumDiff
  50. FnSkbGetTunnelOpt
  51. FnSkbSetTunnelOpt
  52. FnSkbChangeProto
  53. FnSkbChangeType
  54. FnSkbUnderCgroup
  55. FnGetHashRecalc
  56. FnGetCurrentTask
  57. FnProbeWriteUser
  58. FnCurrentTaskUnderCgroup
  59. FnSkbChangeTail
  60. FnSkbPullData
  61. FnCsumUpdate
  62. FnSetHashInvalid
  63. FnGetNumaNodeId
  64. FnSkbChangeHead
  65. FnXdpAdjustHead
  66. FnProbeReadStr
  67. FnGetSocketCookie
  68. FnGetSocketUid
  69. FnSetHash
  70. FnSetsockopt
  71. FnSkbAdjustRoom
  72. FnRedirectMap
  73. FnSkRedirectMap
  74. FnSockMapUpdate
  75. FnXdpAdjustMeta
  76. FnPerfEventReadValue
  77. FnPerfProgReadValue
  78. FnGetsockopt
  79. FnOverrideReturn
  80. FnSockOpsCbFlagsSet
  81. FnMsgRedirectMap
  82. FnMsgApplyBytes
  83. FnMsgCorkBytes
  84. FnMsgPullData
  85. FnBind
  86. FnXdpAdjustTail
  87. FnSkbGetXfrmState
  88. FnGetStack
  89. FnSkbLoadBytesRelative
  90. FnFibLookup
  91. FnSockHashUpdate
  92. FnMsgRedirectHash
  93. FnSkRedirectHash
  94. FnLwtPushEncap
  95. FnLwtSeg6StoreBytes
  96. FnLwtSeg6AdjustSrh
  97. FnLwtSeg6Action
  98. FnRcRepeat
  99. FnRcKeydown
  100. FnSkbCgroupId
  101. FnGetCurrentCgroupId
  102. FnGetLocalStorage
  103. FnSkSelectReuseport
  104. FnSkbAncestorCgroupId
  105. FnSkLookupTcp
  106. FnSkLookupUdp
  107. FnSkRelease
  108. FnMapPushElem
  109. FnMapPopElem
  110. FnMapPeekElem
  111. FnMsgPushData
  112. FnMsgPopData
  113. FnRcPointerRel
  114. FnSpinLock
  115. FnSpinUnlock
  116. FnSkFullsock
  117. FnTcpSock
  118. FnSkbEcnSetCe
  119. FnGetListenerSock
  120. FnSkcLookupTcp
  121. FnTcpCheckSyncookie
  122. FnSysctlGetName
  123. FnSysctlGetCurrentValue
  124. FnSysctlGetNewValue
  125. FnSysctlSetNewValue
  126. FnStrtol
  127. FnStrtoul
  128. FnSkStorageGet
  129. FnSkStorageDelete
  130. FnSendSignal
  131. FnTcpGenSyncookie
  132. FnSkbOutput
  133. FnProbeReadUser
  134. FnProbeReadKernel
  135. FnProbeReadUserStr
  136. FnProbeReadKernelStr
  137. FnTcpSendAck
  138. FnSendSignalThread
  139. FnJiffies64
  140. FnReadBranchRecords
  141. FnGetNsCurrentPidTgid
  142. FnXdpOutput
  143. FnGetNetnsCookie
  144. FnGetCurrentAncestorCgroupId
  145. FnSkAssign
  146. FnKtimeGetBootNs
  147. FnSeqPrintf
  148. FnSeqWrite
  149. FnSkCgroupId
  150. FnSkAncestorCgroupId
  151. FnRingbufOutput
  152. FnRingbufReserve
  153. FnRingbufSubmit
  154. FnRingbufDiscard
  155. FnRingbufQuery
  156. FnCsumLevel
  157. FnSkcToTcp6Sock
  158. FnSkcToTcpSock
  159. FnSkcToTcpTimewaitSock
  160. FnSkcToTcpRequestSock
  161. FnSkcToUdp6Sock
  162. FnGetTaskStack
  163. FnLoadHdrOpt
  164. FnStoreHdrOpt
  165. FnReserveHdrOpt
  166. FnInodeStorageGet
  167. FnInodeStorageDelete
  168. FnDPath
  169. FnCopyFromUser
  170. FnSnprintfBtf
  171. FnSeqPrintfBtf
  172. FnSkbCgroupClassid
  173. FnRedirectNeigh
  174. FnPerCpuPtr
  175. FnThisCpuPtr
  176. FnRedirectPeer
  177. FnTaskStorageGet
  178. FnTaskStorageDelete
  179. FnGetCurrentTaskBtf
  180. FnBprmOptsSet
  181. FnKtimeGetCoarseNs
  182. FnImaInodeHash
  183. FnSockFromFile
  184. )
  185. // Call emits a function call.
  186. func (fn BuiltinFunc) Call() Instruction {
  187. return Instruction{
  188. OpCode: OpCode(JumpClass).SetJumpOp(Call),
  189. Constant: int64(fn),
  190. }
  191. }