[−][src]Module solana_rbpf::ebpf
This module contains all the definitions related to eBPF, and some functions permitting to manipulate eBPF instructions.
The number of bytes in an instruction, the maximum number of instructions in a program, and also all operation codes are defined here as constants.
The structure for an instruction used by this crate, as well as the function to extract it from a program, is also defined in the module.
To learn more about these instructions, see the Linux kernel documentation: https://www.kernel.org/doc/Documentation/networking/filter.txt, or for a shorter version of the list of the operation codes: https://github.com/iovisor/bpf-docs/blob/master/eBPF.md
Structs
Insn | An eBPF instruction. |
Enums
EbpfError | Error definitions |
Helper | Contains the helper |
Constants
ADD32_IMM | BPF opcode: |
ADD32_REG | BPF opcode: |
ADD64_IMM | BPF opcode: |
ADD64_REG | BPF opcode: |
AND32_IMM | BPF opcode: |
AND32_REG | BPF opcode: |
AND64_IMM | BPF opcode: |
AND64_REG | BPF opcode: |
ARSH32_IMM | BPF opcode: |
ARSH32_REG | BPF opcode: |
ARSH64_IMM | BPF opcode: |
ARSH64_REG | BPF opcode: |
BE | BPF opcode: |
BPF_ABS | BPF mode modifier: absolute load. |
BPF_ADD | BPF ALU/ALU64 operation code: addition. |
BPF_ALU | BPF operation class: 32 bits arithmetic operation. |
BPF_ALU64 | BPF operation class: 64 bits arithmetic operation. |
BPF_ALU_OP_MASK | Mask to extract the arithmetic operation code from an instruction operation code. |
BPF_AND | BPF ALU/ALU64 operation code: and. |
BPF_ARSH | BPF ALU/ALU64 operation code: sign extending right shift. |
BPF_B | BPF size modifier: byte (1 byte). |
BPF_CALL | BPF JMP operation code: helper function call. |
BPF_CLS_MASK | Mask to extract the operation class from an operation code. |
BPF_DIV | BPF ALU/ALU64 operation code: division. |
BPF_DW | BPF size modifier: double word (8 bytes). |
BPF_END | BPF ALU/ALU64 operation code: endianness conversion. |
BPF_EXIT | BPF JMP operation code: return from program. |
BPF_H | BPF size modifier: half-word (2 bytes). |
BPF_IMM | BPF mode modifier: immediate value. |
BPF_IND | BPF mode modifier: indirect load. |
BPF_JA | BPF JMP operation code: jump. |
BPF_JEQ | BPF JMP operation code: jump if equal. |
BPF_JGE | BPF JMP operation code: jump if greater or equal. |
BPF_JGT | BPF JMP operation code: jump if greater than. |
BPF_JLE | BPF JMP operation code: jump if lower or equal. |
BPF_JLT | BPF JMP operation code: jump if lower than. |
BPF_JMP | BPF operation class: jump. |
BPF_JNE | BPF JMP operation code: jump if not equal. |
BPF_JSET | BPF JMP operation code: jump if |
BPF_JSGE | BPF JMP operation code: jump if greater or equal (signed). |
BPF_JSGT | BPF JMP operation code: jump if greater than (signed). |
BPF_JSLE | BPF JMP operation code: jump if lower or equal (signed). |
BPF_JSLT | BPF JMP operation code: jump if lower than (signed). |
BPF_K | BPF source operand modifier: 32-bit immediate value. |
BPF_LD | BPF operation class: load from immediate. |
BPF_LDX | BPF operation class: load from register. |
BPF_LSH | BPF ALU/ALU64 operation code: left shift. |
BPF_MEM | BPF mode modifier: load from / store to memory. |
BPF_MOD | BPF ALU/ALU64 operation code: modulus. |
BPF_MOV | BPF ALU/ALU64 operation code: move. |
BPF_MUL | BPF ALU/ALU64 operation code: multiplication. |
BPF_NEG | BPF ALU/ALU64 operation code: negation. |
BPF_OR | BPF ALU/ALU64 operation code: or. |
BPF_RSH | BPF ALU/ALU64 operation code: right shift. |
BPF_ST | BPF operation class: store immediate. |
BPF_STX | BPF operation class: store value from register. |
BPF_SUB | BPF ALU/ALU64 operation code: subtraction. |
BPF_W | BPF size modifier: word (4 bytes). |
BPF_X | BPF source operand modifier: |
BPF_XADD | BPF mode modifier: exclusive add. |
BPF_XOR | BPF ALU/ALU64 operation code: exclusive or. |
CALL_IMM | BPF opcode: |
CALL_REG | BPF opcode: tail call. |
DIV32_IMM | BPF opcode: |
DIV32_REG | BPF opcode: |
DIV64_IMM | BPF opcode: |
DIV64_REG | BPF opcode: |
ELF_INSN_DUMP_OFFSET | ELF dump instruction offset Instruction numbers typically start at 29 in the ELF dump, use this offset when reporting so that trace aligns with the dump. |
EXIT | BPF opcode: |
FIRST_SCRATCH_REG | First scratch register |
INSN_SIZE | Size of an eBPF instructions, in bytes. |
JA | BPF opcode: |
JEQ_IMM | BPF opcode: |
JEQ_REG | BPF opcode: |
JGE_IMM | BPF opcode: |
JGE_REG | BPF opcode: |
JGT_IMM | BPF opcode: |
JGT_REG | BPF opcode: |
JLE_IMM | BPF opcode: |
JLE_REG | BPF opcode: |
JLT_IMM | BPF opcode: |
JLT_REG | BPF opcode: |
JNE_IMM | BPF opcode: |
JNE_REG | BPF opcode: |
JSET_IMM | BPF opcode: |
JSET_REG | BPF opcode: |
JSGE_IMM | BPF opcode: |
JSGE_REG | BPF opcode: |
JSGT_IMM | BPF opcode: |
JSGT_REG | BPF opcode: |
JSLE_IMM | BPF opcode: |
JSLE_REG | BPF opcode: |
JSLT_IMM | BPF opcode: |
JSLT_REG | BPF opcode: |
LD_ABS_B | BPF opcode: |
LD_ABS_DW | BPF opcode: |
LD_ABS_H | BPF opcode: |
LD_ABS_W | BPF opcode: |
LD_B_REG | BPF opcode: |
LD_DW_IMM | BPF opcode: |
LD_DW_REG | BPF opcode: |
LD_H_REG | BPF opcode: |
LD_IND_B | BPF opcode: |
LD_IND_DW | BPF opcode: |
LD_IND_H | BPF opcode: |
LD_IND_W | BPF opcode: |
LD_W_REG | BPF opcode: |
LE | BPF opcode: |
LSH32_IMM | BPF opcode: |
LSH32_REG | BPF opcode: |
LSH64_IMM | BPF opcode: |
LSH64_REG | BPF opcode: |
MAX_CALL_DEPTH | Max BPF to BPF call depth |
MM_HEAP_START | Start of the heap in the memory map |
MM_INPUT_START | Start of the input buffers in the memory map |
MM_PROGRAM_START | Start of the program bits (text and ro segments) in the memory map |
MM_STACK_START | Start of the stack in the memory map |
MOD32_IMM | BPF opcode: |
MOD32_REG | BPF opcode: |
MOD64_IMM | BPF opcode: |
MOD64_REG | BPF opcode: |
MOV32_IMM | BPF opcode: |
MOV32_REG | BPF opcode: |
MOV64_IMM | BPF opcode: |
MOV64_REG | BPF opcode: |
MUL32_IMM | BPF opcode: |
MUL32_REG | BPF opcode: |
MUL64_IMM | BPF opcode: |
MUL64_REG | BPF opcode: |
NEG32 | BPF opcode: |
NEG64 | BPF opcode: |
OR32_IMM | BPF opcode: |
OR32_REG | BPF opcode: |
OR64_IMM | BPF opcode: |
OR64_REG | BPF opcode: |
PROG_MAX_INSNS | Maximum number of instructions in an eBPF program. |
PROG_MAX_SIZE | Maximum size of an eBPF program, in bytes. |
RSH32_IMM | BPF opcode: |
RSH32_REG | BPF opcode: |
RSH64_IMM | BPF opcode: |
RSH64_REG | BPF opcode: |
SCRATCH_REGS | Number of scratch registers |
STACK_FRAME_SIZE | Stack for the eBPF stack, in bytes. |
STACK_REG | Stack register |
ST_B_IMM | BPF opcode: |
ST_B_REG | BPF opcode: |
ST_DW_IMM | BPF opcode: |
ST_DW_REG | BPF opcode: |
ST_DW_XADD | BPF opcode: |
ST_H_IMM | BPF opcode: |
ST_H_REG | BPF opcode: |
ST_W_IMM | BPF opcode: |
ST_W_REG | BPF opcode: |
ST_W_XADD | BPF opcode: |
SUB32_IMM | BPF opcode: |
SUB32_REG | BPF opcode: |
SUB64_IMM | BPF opcode: |
SUB64_REG | BPF opcode: |
XOR32_IMM | BPF opcode: |
XOR32_REG | BPF opcode: |
XOR64_IMM | BPF opcode: |
XOR64_REG | BPF opcode: |
Traits
HelperObject | Helper with context |
UserDefinedError | User defined errors must implement this trait |
Functions
get_insn | Get the instruction at |
hash_symbol_name | Hash a symbol name |
to_insn_vec | Return a vector of |
Type Definitions
HelperFunction | Helper function without context. |