bpf(4): spaces around + in instruction tables
Makes them easier on the eyes.
This commit is contained in:
parent
6b566ffb7e
commit
a9eff7b74b
|
@ -1,6 +1,6 @@
|
|||
.\" -*- nroff -*-
|
||||
.\"
|
||||
.\" $NetBSD: bpf.4,v 1.70 2023/02/11 11:49:02 uwe Exp $
|
||||
.\" $NetBSD: bpf.4,v 1.71 2023/02/11 12:39:44 uwe Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1990, 1991, 1992, 1993, 1994
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
|
@ -602,18 +602,18 @@ Arithmetic overflow when calculating a variable offset terminates
|
|||
the filter program and the packet is ignored.
|
||||
The semantics of all the recognized BPF_LD instructions follow.
|
||||
.\" to make all instruction tables align nicely, use common max width
|
||||
.ds max-insn .Sy BPF_LDX+BPF_W+BPF_WWW
|
||||
.ds max-insn .Sy BPF_LDX + BPF_W + BPF_WWW
|
||||
.\"
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_LD+BPF_W+BPF_ABS Ta A \[<-] P[k:4]
|
||||
.It Sy BPF_LD+BPF_H+BPF_ABS Ta A \[<-] P[k:2]
|
||||
.It Sy BPF_LD+BPF_B+BPF_ABS Ta A \[<-] P[k:1]
|
||||
.It Sy BPF_LD+BPF_W+BPF_IND Ta A \[<-] P[X+k:4]
|
||||
.It Sy BPF_LD+BPF_H+BPF_IND Ta A \[<-] P[X+k:2]
|
||||
.It Sy BPF_LD+BPF_B+BPF_IND Ta A \[<-] P[X+k:1]
|
||||
.It Sy BPF_LD+BPF_W+BPF_LEN Ta A \[<-] len
|
||||
.It Sy BPF_LD+BPF_IMM Ta A \[<-] k
|
||||
.It Sy BPF_LD+BPF_MEM Ta A \[<-] M[k]
|
||||
.It Sy BPF_LD + BPF_W + BPF_ABS Ta A \[<-] P[k:4]
|
||||
.It Sy BPF_LD + BPF_H + BPF_ABS Ta A \[<-] P[k:2]
|
||||
.It Sy BPF_LD + BPF_B + BPF_ABS Ta A \[<-] P[k:1]
|
||||
.It Sy BPF_LD + BPF_W + BPF_IND Ta A \[<-] P[X+k:4]
|
||||
.It Sy BPF_LD + BPF_H + BPF_IND Ta A \[<-] P[X+k:2]
|
||||
.It Sy BPF_LD + BPF_B + BPF_IND Ta A \[<-] P[X+k:1]
|
||||
.It Sy BPF_LD + BPF_W + BPF_LEN Ta A \[<-] len
|
||||
.It Sy BPF_LD + BPF_IMM Ta A \[<-] k
|
||||
.It Sy BPF_LD + BPF_MEM Ta A \[<-] M[k]
|
||||
.El
|
||||
.It Sy BPF_LDX
|
||||
These instructions load a value into the index register.
|
||||
|
@ -622,10 +622,10 @@ the accumulator loads, but they include
|
|||
.Sy BPF_MSH ,
|
||||
a hack for efficiently loading the IP header length.
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_LDX+BPF_W+BPF_IMM Ta X \[<-] k
|
||||
.It Sy BPF_LDX+BPF_W+BPF_MEM Ta X \[<-] M[k]
|
||||
.It Sy BPF_LDX+BPF_W+BPF_LEN Ta X \[<-] len
|
||||
.It Sy BPF_LDX+BPF_B+BPF_MSH Ta X \[<-] 4*(P[k:1]&0xf)
|
||||
.It Sy BPF_LDX + BPF_W + BPF_IMM Ta X \[<-] k
|
||||
.It Sy BPF_LDX + BPF_W + BPF_MEM Ta X \[<-] M[k]
|
||||
.It Sy BPF_LDX + BPF_W + BPF_LEN Ta X \[<-] len
|
||||
.It Sy BPF_LDX + BPF_B + BPF_MSH Ta X \[<-] 4*(P[k:1]&0xf)
|
||||
.El
|
||||
.It Sy BPF_ST
|
||||
This instruction stores the accumulator into the scratch memory.
|
||||
|
@ -647,23 +647,23 @@ For binary operations, a source mode is required
|
|||
or
|
||||
.Sy BPF_X ) .
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_ALU+BPF_ADD+BPF_K Ta A \[<-] A + k
|
||||
.It Sy BPF_ALU+BPF_SUB+BPF_K Ta A \[<-] A \- k
|
||||
.It Sy BPF_ALU+BPF_MUL+BPF_K Ta A \[<-] A * k
|
||||
.It Sy BPF_ALU+BPF_DIV+BPF_K Ta A \[<-] A / k
|
||||
.It Sy BPF_ALU+BPF_AND+BPF_K Ta A \[<-] A & k
|
||||
.It Sy BPF_ALU+BPF_OR+BPF_K Ta A \[<-] A | k
|
||||
.It Sy BPF_ALU+BPF_LSH+BPF_K Ta A \[<-] A \[<<] k
|
||||
.It Sy BPF_ALU+BPF_RSH+BPF_K Ta A \[<-] A \[>>] k
|
||||
.It Sy BPF_ALU+BPF_ADD+BPF_X Ta A \[<-] A + X
|
||||
.It Sy BPF_ALU+BPF_SUB+BPF_X Ta A \[<-] A \- X
|
||||
.It Sy BPF_ALU+BPF_MUL+BPF_X Ta A \[<-] A * X
|
||||
.It Sy BPF_ALU+BPF_DIV+BPF_X Ta A \[<-] A / X
|
||||
.It Sy BPF_ALU+BPF_AND+BPF_X Ta A \[<-] A & X
|
||||
.It Sy BPF_ALU+BPF_OR+BPF_X Ta A \[<-] A | X
|
||||
.It Sy BPF_ALU+BPF_LSH+BPF_X Ta A \[<-] A \[<<] X
|
||||
.It Sy BPF_ALU+BPF_RSH+BPF_X Ta A \[<-] A \[>>] X
|
||||
.It Sy BPF_ALU+BPF_NEG Ta A \[<-] \-A
|
||||
.It Sy BPF_ALU + BPF_ADD + BPF_K Ta A \[<-] A + k
|
||||
.It Sy BPF_ALU + BPF_SUB + BPF_K Ta A \[<-] A \- k
|
||||
.It Sy BPF_ALU + BPF_MUL + BPF_K Ta A \[<-] A * k
|
||||
.It Sy BPF_ALU + BPF_DIV + BPF_K Ta A \[<-] A / k
|
||||
.It Sy BPF_ALU + BPF_AND + BPF_K Ta A \[<-] A & k
|
||||
.It Sy BPF_ALU + BPF_OR + BPF_K Ta A \[<-] A | k
|
||||
.It Sy BPF_ALU + BPF_LSH + BPF_K Ta A \[<-] A \[<<] k
|
||||
.It Sy BPF_ALU + BPF_RSH + BPF_K Ta A \[<-] A \[>>] k
|
||||
.It Sy BPF_ALU + BPF_ADD + BPF_X Ta A \[<-] A + X
|
||||
.It Sy BPF_ALU + BPF_SUB + BPF_X Ta A \[<-] A \- X
|
||||
.It Sy BPF_ALU + BPF_MUL + BPF_X Ta A \[<-] A * X
|
||||
.It Sy BPF_ALU + BPF_DIV + BPF_X Ta A \[<-] A / X
|
||||
.It Sy BPF_ALU + BPF_AND + BPF_X Ta A \[<-] A & X
|
||||
.It Sy BPF_ALU + BPF_OR + BPF_X Ta A \[<-] A | X
|
||||
.It Sy BPF_ALU + BPF_LSH + BPF_X Ta A \[<-] A \[<<] X
|
||||
.It Sy BPF_ALU + BPF_RSH + BPF_X Ta A \[<-] A \[>>] X
|
||||
.It Sy BPF_ALU + BPF_NEG Ta A \[<-] \-A
|
||||
.El
|
||||
.It Sy BPF_JMP
|
||||
The jump instructions alter flow of control.
|
||||
|
@ -681,15 +681,15 @@ opcode uses the 32 bit
|
|||
field as the offset, allowing arbitrarily distant destinations.
|
||||
All conditionals use unsigned comparison conventions.
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_JMP+BPF_JA Ta pc += k
|
||||
.It Sy BPF_JMP+BPF_JGT+BPF_K Ta "pc += (A > k) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JGE+BPF_K Ta "pc += (A \*[Ge] k) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JEQ+BPF_K Ta "pc += (A == k) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JSET+BPF_K Ta "pc += (A & k) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JGT+BPF_X Ta "pc += (A > X) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JGE+BPF_X Ta "pc += (A \*[Ge] X) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JEQ+BPF_X Ta "pc += (A == X) ? jt : jf"
|
||||
.It Sy BPF_JMP+BPF_JSET+BPF_X Ta "pc += (A & X) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JA Ta pc += k
|
||||
.It Sy BPF_JMP + BPF_JGT + BPF_K Ta "pc += (A > k) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JGE + BPF_K Ta "pc += (A \*[Ge] k) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JEQ + BPF_K Ta "pc += (A == k) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JSET + BPF_K Ta "pc += (A & k) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JGT + BPF_X Ta "pc += (A > X) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JGE + BPF_X Ta "pc += (A \*[Ge] X) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JEQ + BPF_X Ta "pc += (A == X) ? jt : jf"
|
||||
.It Sy BPF_JMP + BPF_JSET + BPF_X Ta "pc += (A & X) ? jt : jf"
|
||||
.El
|
||||
.It Sy BPF_RET
|
||||
The return instructions terminate the filter program and specify the amount
|
||||
|
@ -701,8 +701,8 @@ The return value is either a constant
|
|||
or the accumulator
|
||||
.Sy ( BPF_A ) .
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_RET+BPF_A Ta accept A bytes
|
||||
.It Sy BPF_RET+BPF_K Ta accept k bytes
|
||||
.It Sy BPF_RET + BPF_A Ta accept A bytes
|
||||
.It Sy BPF_RET + BPF_K Ta accept k bytes
|
||||
.El
|
||||
.It Sy BPF_MISC
|
||||
The miscellaneous category was created for anything that doesn't
|
||||
|
@ -711,16 +711,16 @@ be added.
|
|||
Currently, these are the register transfer instructions
|
||||
that copy the index register to the accumulator or vice versa.
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_MISC+BPF_TAX Ta X \[<-] A
|
||||
.It Sy BPF_MISC+BPF_TXA Ta A \[<-] X
|
||||
.It Sy BPF_MISC + BPF_TAX Ta X \[<-] A
|
||||
.It Sy BPF_MISC + BPF_TXA Ta A \[<-] X
|
||||
.El
|
||||
.Pp
|
||||
Also, two instructions to call a "coprocessor" if initialized by the kernel
|
||||
component.
|
||||
There is no coprocessor by default.
|
||||
.Bl -column "\*[max-insn]" -offset indent
|
||||
.It Sy BPF_MISC+BPF_COP Ta A \[<-] funcs[k](..)
|
||||
.It Sy BPF_MISC+BPF_COPX Ta A \[<-] funcs[X](..)
|
||||
.It Sy BPF_MISC + BPF_COP Ta A \[<-] funcs[k](..)
|
||||
.It Sy BPF_MISC + BPF_COPX Ta A \[<-] funcs[X](..)
|
||||
.El
|
||||
.Pp
|
||||
If the coprocessor is not set or the function index is out of range, these
|
||||
|
|
Loading…
Reference in New Issue