Liking cljdoc? Tell your friends :D

clj-ebpf.net.checksum

Checksum calculation helpers for eBPF programs.

These helpers use BPF kernel helper functions for efficient checksum updates. Most are designed for TC/SKB programs.

Checksum calculation helpers for eBPF programs.

These helpers use BPF kernel helper functions for efficient
checksum updates. Most are designed for TC/SKB programs.
raw docstring

BPF-F-MARK-ENFORCEclj

source

BPF-F-MARK-MANGLED-0clj

source

BPF-F-PSEUDO-HDRclj

source

BPF-FUNC-csum-diffclj

source

BPF-FUNC-csum-updateclj

source

BPF-FUNC-l3-csum-replaceclj

source

BPF-FUNC-l4-csum-replaceclj

source

csum-diffclj

(csum-diff from-ptr-reg from-size to-ptr-reg to-size seed-reg)

Generate instructions to compute checksum difference. Uses bpf_csum_diff kernel helper.

Works in both XDP and TC programs.

from-ptr-reg: Pointer to old data (can be stack or map value) from-size: Size of old data in bytes (must be multiple of 4) to-ptr-reg: Pointer to new data to-size: Size of new data in bytes (must be multiple of 4) seed-reg: Initial checksum value (0 for new calculation)

Returns: Checksum difference in r0

Clobbers: r1-r5, r0

Generate instructions to compute checksum difference.
Uses bpf_csum_diff kernel helper.

Works in both XDP and TC programs.

from-ptr-reg: Pointer to old data (can be stack or map value)
from-size: Size of old data in bytes (must be multiple of 4)
to-ptr-reg: Pointer to new data
to-size: Size of new data in bytes (must be multiple of 4)
seed-reg: Initial checksum value (0 for new calculation)

Returns: Checksum difference in r0

Clobbers: r1-r5, r0
sourceraw docstring

fold-csum-32clj

(fold-csum-32 csum-reg scratch-reg)

Fold a 32-bit checksum value into 16 bits. Used after accumulating checksum values.

csum-reg: Register containing 32-bit checksum (will be modified to 16-bit)

Fold a 32-bit checksum value into 16 bits.
Used after accumulating checksum values.

csum-reg: Register containing 32-bit checksum (will be modified to 16-bit)
sourceraw docstring

l3-csum-replace-2clj

(l3-csum-replace-2 skb-reg csum-offset old-val-reg new-val-reg)

Generate instructions to update L3 checksum for a 2-byte value change.

skb-reg: SKB pointer register csum-offset: Offset to checksum field from packet start old-val-reg: Register with old 2-byte value new-val-reg: Register with new 2-byte value

Clobbers: r1-r5, r0

Generate instructions to update L3 checksum for a 2-byte value change.

skb-reg: SKB pointer register
csum-offset: Offset to checksum field from packet start
old-val-reg: Register with old 2-byte value
new-val-reg: Register with new 2-byte value

Clobbers: r1-r5, r0
sourceraw docstring

l3-csum-replace-4clj

(l3-csum-replace-4 skb-reg csum-offset old-val-reg new-val-reg)

Generate instructions to update L3 (IP) checksum for a 4-byte value change. Uses bpf_l3_csum_replace kernel helper.

For TC programs only (requires SKB).

skb-reg: SKB pointer register (typically :r1 saved to callee-saved reg) csum-offset: Offset to checksum field from packet start old-val-reg: Register with old 4-byte value new-val-reg: Register with new 4-byte value

Clobbers: r1-r5, r0 (return value)

Generate instructions to update L3 (IP) checksum for a 4-byte value change.
Uses bpf_l3_csum_replace kernel helper.

For TC programs only (requires SKB).

skb-reg: SKB pointer register (typically :r1 saved to callee-saved reg)
csum-offset: Offset to checksum field from packet start
old-val-reg: Register with old 4-byte value
new-val-reg: Register with new 4-byte value

Clobbers: r1-r5, r0 (return value)
sourceraw docstring

l4-csum-replace-2clj

(l4-csum-replace-2 skb-reg csum-offset old-val-reg new-val-reg pseudo-hdr?)

Generate instructions to update L4 checksum for a 2-byte value change.

skb-reg: SKB pointer register csum-offset: Offset to checksum field from packet start old-val-reg: Register with old 2-byte value new-val-reg: Register with new 2-byte value pseudo-hdr?: If true, include BPF_F_PSEUDO_HDR flag

Clobbers: r1-r5, r0

Generate instructions to update L4 checksum for a 2-byte value change.

skb-reg: SKB pointer register
csum-offset: Offset to checksum field from packet start
old-val-reg: Register with old 2-byte value
new-val-reg: Register with new 2-byte value
pseudo-hdr?: If true, include BPF_F_PSEUDO_HDR flag

Clobbers: r1-r5, r0
sourceraw docstring

l4-csum-replace-4clj

(l4-csum-replace-4 skb-reg csum-offset old-val-reg new-val-reg pseudo-hdr?)

Generate instructions to update L4 (TCP/UDP) checksum for a 4-byte value change. Uses bpf_l4_csum_replace kernel helper.

For TC programs only (requires SKB).

skb-reg: SKB pointer register csum-offset: Offset to checksum field from packet start old-val-reg: Register with old 4-byte value new-val-reg: Register with new 4-byte value pseudo-hdr?: If true, include BPF_F_PSEUDO_HDR flag (for IP address changes)

Clobbers: r1-r5, r0

Generate instructions to update L4 (TCP/UDP) checksum for a 4-byte value change.
Uses bpf_l4_csum_replace kernel helper.

For TC programs only (requires SKB).

skb-reg: SKB pointer register
csum-offset: Offset to checksum field from packet start
old-val-reg: Register with old 4-byte value
new-val-reg: Register with new 4-byte value
pseudo-hdr?: If true, include BPF_F_PSEUDO_HDR flag (for IP address changes)

Clobbers: r1-r5, r0
sourceraw docstring

negate-csumclj

(negate-csum csum-reg)

Negate checksum (one's complement).

csum-reg: Register containing checksum (will be negated)

Negate checksum (one's complement).

csum-reg: Register containing checksum (will be negated)
sourceraw docstring

update-ip-checksumclj

(update-ip-checksum skb-reg ip-hdr-offset old-val-reg new-val-reg)

Update IP checksum after changing a 4-byte field (e.g., saddr or daddr).

skb-reg: SKB pointer register ip-hdr-offset: Offset to IP header from packet start (typically 14) old-val-reg: Register with old value new-val-reg: Register with new value

Clobbers: r1-r5, r0

Update IP checksum after changing a 4-byte field (e.g., saddr or daddr).

skb-reg: SKB pointer register
ip-hdr-offset: Offset to IP header from packet start (typically 14)
old-val-reg: Register with old value
new-val-reg: Register with new value

Clobbers: r1-r5, r0
sourceraw docstring

update-tcp-checksum-for-ipclj

(update-tcp-checksum-for-ip skb-reg l4-hdr-offset old-ip-reg new-ip-reg)

Update TCP checksum after IP address change. TCP checksum includes pseudo-header with IP addresses.

skb-reg: SKB pointer register l4-hdr-offset: Offset to TCP header from packet start old-ip-reg: Register with old IP address new-ip-reg: Register with new IP address

Clobbers: r1-r5, r0

Update TCP checksum after IP address change.
TCP checksum includes pseudo-header with IP addresses.

skb-reg: SKB pointer register
l4-hdr-offset: Offset to TCP header from packet start
old-ip-reg: Register with old IP address
new-ip-reg: Register with new IP address

Clobbers: r1-r5, r0
sourceraw docstring

update-tcp-checksum-for-portclj

(update-tcp-checksum-for-port skb-reg l4-hdr-offset old-port-reg new-port-reg)

Update TCP checksum after port change.

skb-reg: SKB pointer register l4-hdr-offset: Offset to TCP header from packet start old-port-reg: Register with old port (network order) new-port-reg: Register with new port (network order)

Clobbers: r1-r5, r0

Update TCP checksum after port change.

skb-reg: SKB pointer register
l4-hdr-offset: Offset to TCP header from packet start
old-port-reg: Register with old port (network order)
new-port-reg: Register with new port (network order)

Clobbers: r1-r5, r0
sourceraw docstring

update-udp-checksum-for-ipclj

(update-udp-checksum-for-ip skb-reg l4-hdr-offset old-ip-reg new-ip-reg)

Update UDP checksum after IP address change. UDP checksum includes pseudo-header with IP addresses.

skb-reg: SKB pointer register l4-hdr-offset: Offset to UDP header from packet start old-ip-reg: Register with old IP address new-ip-reg: Register with new IP address

Clobbers: r1-r5, r0

Update UDP checksum after IP address change.
UDP checksum includes pseudo-header with IP addresses.

skb-reg: SKB pointer register
l4-hdr-offset: Offset to UDP header from packet start
old-ip-reg: Register with old IP address
new-ip-reg: Register with new IP address

Clobbers: r1-r5, r0
sourceraw docstring

update-udp-checksum-for-portclj

(update-udp-checksum-for-port skb-reg l4-hdr-offset old-port-reg new-port-reg)

Update UDP checksum after port change.

skb-reg: SKB pointer register l4-hdr-offset: Offset to UDP header from packet start old-port-reg: Register with old port (network order) new-port-reg: Register with new port (network order)

Clobbers: r1-r5, r0

Update UDP checksum after port change.

skb-reg: SKB pointer register
l4-hdr-offset: Offset to UDP header from packet start
old-port-reg: Register with old port (network order)
new-port-reg: Register with new port (network order)

Clobbers: r1-r5, r0
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close