bpftool-net(8) System Manager's Manual bpftool-net(8) (NAME) bpftool-net - BPF (SYNOPSIS) bpftool [OPTIONS] net COMMAND OPTIONS := { { -j | --json } [{ -p | --pretty }] | { -d | --debug } } COMMANDS := { show | list | attach | detach | help } NET (NET COMMANDS) bpftool net { show | list } [ dev NAME ] bpftool net attach ATTACH_TYPE PROG dev NAME [ overwrite | prepend ] bpftool net detach ATTACH_TYPE dev NAME bpftool net help PROG := { id PROG_ID | pinned FILE | tag PROG_TAG | name PROG_NAME } ATTACH_TYPE := { xdp | xdpgeneric | xdpdrv | xdpoffload | tcx_ingress | tcx_egress } (DESCRIPTION) bpftool net { show | list } [ dev NAME ] bpf . xdp tcx netkit / tc ( old-style tc classifier/action) flow_dissector netfilter BPF_PROG_TYPE_XDP BPF_PROG_TYPE_SCHED_CLS BPF_PROG_TYPE_SCHED_ACT BPF_PROG_TYPE_FLOW_DISSECTOR BPF_PROG_TYPE_NETFILTER. cgroup BPF_PROG_TYPE_CGROUP_SKB BPF_PROG_TYPE_CGROUP_SOCK BPF_PROG_TYPE_SOCK_OPS BPF_PROG_TYPE_CGROUP_SOCK_ADDR bpftool cgroup cgroup . bpf sk_{filter, skb, msg, reuseport} lwt/seg6 iproute2 . xdp tcx netkit bpf /qdisc tc flow_dissector netfilter . xdp tcx/netkit/tc ifindex . bpf tc bpf tcx netkit tc bpf qdisc clsact bpf root qdisc clsact . bpftool net attach ATTACH_TYPE PROG dev NAME [ overwrite | prepend ] bpf PROG NAME ATTACH_TYPE. ATTACH_TYPE : xdp - XDP (native) (NIC) XDP (generic) xdpgeneric - Generic XDP XDP skb xdpdrv - Native XDP xdpoffload - Offload XDP (NIC) tcx_ingress - Ingress TCX tcx_egress - Egress TCX XDP (xdp xdpgeneric xdpdrv xdpoffload) overwrite bpf . tcx_ingress tcx_egress prepend . bpftool net detach ATTACH_TYPE dev NAME bpf NAME ATTACH_TYPE. bpf ATTACH_TYPE . bpftool net help . (OPTIONS) -h, --help ( bpftool help). -V, --version bpftool ( bpftool version) libbpf bpftool . LLVM libbfd JIT (bpftool prog dump jited) BPF ( bpftool prog profile pid BPF ) . -j, --json JSON. JSON . -p, --pretty JSON . -j . -d, --debug (debug-level). libbpf (verifier) . (EXAMPLES) # bpftool net xdp: eth0(2) driver id 198 tc: eth0(2) htb name prefix_matcher.o:[cls_prefix_matcher_htb] id 111727 act [] eth0(2) clsact/ingress fbflow_icmp id 130246 act [] eth0(2) clsact/egress prefix_matcher.o:[cls_prefix_matcher_clsact] id 111726 eth0(2) clsact/egress cls_fg_dscp id 108619 act [] eth0(2) clsact/egress fbflow_egress id 130245 # bpftool -jp net [{ "xdp": [{ "devname": "eth0", "ifindex": 2, "mode": "driver", "id": 198 } ], "tc": [{ "devname": "eth0", "ifindex": 2, "kind": "htb", "name": "prefix_matcher.o:[cls_prefix_matcher_htb]", "id": 111727, "act": [] },{ "devname": "eth0", "ifindex": 2, "kind": "clsact/ingress", "name": "fbflow_icmp", "id": 130246, "act": [] },{ "devname": "eth0", "ifindex": 2, "kind": "clsact/egress", "name": "prefix_matcher.o:[cls_prefix_matcher_clsact]", "id": 111726, },{ "devname": "eth0", "ifindex": 2, "kind": "clsact/egress", "name": "cls_fg_dscp", "id": 108619, "act": [] },{ "devname": "eth0", "ifindex": 2, "kind": "clsact/egress", "name": "fbflow_egress", "id": 130245, } ] } ] # bpftool net attach xdpdrv id 16 dev enp6s0np0 # bpftool net xdp: enp6s0np0(4) driver id 16 # bpftool net attach xdpdrv id 16 dev enp6s0np0 # bpftool net attach xdpdrv id 20 dev enp6s0np0 overwrite # bpftool net xdp: enp6s0np0(4) driver id 20 # bpftool net attach xdpdrv id 16 dev enp6s0np0 # bpftool net detach xdpdrv dev enp6s0np0 # bpftool net xdp: # bpftool net attach tcx_ingress name tc_prog dev lo # bpftool net tc: lo(1) tcx/ingress tc_prog prog_id 29 # bpftool net attach tcx_ingress name tc_prog2 dev lo prepend # bpftool net tc: lo(1) tcx/ingress tc_prog2 prog_id 30 lo(1) tcx/ingress tc_prog prog_id 29 # bpftool net attach tcx_ingress name tc_prog dev lo # bpftool net detach tcx_ingress dev lo # bpftool net tc: (SEE ALSO) bpf(2), bpf-helpers(7), bpftool(8), bpftool-btf(8), bpftool-cgroup(8), bpftool-feature(8), bpftool-gen(8), bpftool-iter(8), bpftool-link(8), bpftool-map(8), bpftool-perf(8), bpftool-prog(8), bpftool-struct_ops(8), bpftool-token(8) bpftool-net(8)