func.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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 renegerate 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. )
  133. // Call emits a function call.
  134. func (fn BuiltinFunc) Call() Instruction {
  135. return Instruction{
  136. OpCode: OpCode(JumpClass).SetJumpOp(Call),
  137. Constant: int64(fn),
  138. }
  139. }