Liking cljdoc? Tell your friends :D

clj-ebpf.net.nat

NAT (Network Address Translation) primitives for eBPF programs.

Provides high-level operations for DNAT (Destination NAT) and SNAT (Source NAT) that combine packet modification with checksum updates.

These helpers are primarily designed for TC/SKB programs that have access to kernel checksum helper functions.

NAT (Network Address Translation) primitives for eBPF programs.

Provides high-level operations for DNAT (Destination NAT) and
SNAT (Source NAT) that combine packet modification with checksum
updates.

These helpers are primarily designed for TC/SKB programs that
have access to kernel checksum helper functions.
raw docstring

dnat-ipclj

(dnat-ip skb-reg
         data-reg
         ip-hdr-offset
         l4-hdr-offset
         l4-proto
         old-daddr-reg
         new-daddr-reg
         scratch-reg)

Generate instructions for Destination NAT - IP address only. Rewrites destination IP and updates checksums.

For TC programs only (requires SKB for checksum helpers).

skb-reg: SKB pointer register (callee-saved, e.g., :r6) data-reg: Packet data pointer register ip-hdr-offset: Offset to IP header from packet start (typically 14) l4-hdr-offset: Offset to L4 header from packet start l4-proto: :tcp or :udp old-daddr-reg: Register with original dest IP new-daddr-reg: Register with new dest IP scratch-reg: Scratch register for calculations

Clobbers: r0-r5, scratch-reg

Generate instructions for Destination NAT - IP address only.
Rewrites destination IP and updates checksums.

For TC programs only (requires SKB for checksum helpers).

skb-reg: SKB pointer register (callee-saved, e.g., :r6)
data-reg: Packet data pointer register
ip-hdr-offset: Offset to IP header from packet start (typically 14)
l4-hdr-offset: Offset to L4 header from packet start
l4-proto: :tcp or :udp
old-daddr-reg: Register with original dest IP
new-daddr-reg: Register with new dest IP
scratch-reg: Scratch register for calculations

Clobbers: r0-r5, scratch-reg
sourceraw docstring

dnat-portclj

(dnat-port skb-reg
           data-reg
           l4-hdr-offset
           l4-proto
           old-port-reg
           new-port-reg
           scratch-reg)

Generate instructions to rewrite destination port.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register l4-hdr-offset: Offset to L4 header from packet start l4-proto: :tcp or :udp old-port-reg: Register with original port (network order) new-port-reg: Register with new port (network order) scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Generate instructions to rewrite destination port.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
l4-hdr-offset: Offset to L4 header from packet start
l4-proto: :tcp or :udp
old-port-reg: Register with original port (network order)
new-port-reg: Register with new port (network order)
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

full-dnatclj

(full-dnat skb-reg
           data-reg
           ip-hdr-offset
           l4-hdr-offset
           l4-proto
           old-daddr-reg
           new-daddr-reg
           old-dport-reg
           new-dport-reg
           scratch-reg)

Complete DNAT operation: rewrite both IP and port. Convenience wrapper combining dnat-ip and dnat-port.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register ip-hdr-offset: Offset to IP header (typically 14) l4-hdr-offset: Offset to L4 header l4-proto: :tcp or :udp old-daddr-reg: Register with original dest IP new-daddr-reg: Register with new dest IP old-dport-reg: Register with original dest port (network order) new-dport-reg: Register with new dest port (network order) scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Complete DNAT operation: rewrite both IP and port.
Convenience wrapper combining dnat-ip and dnat-port.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
ip-hdr-offset: Offset to IP header (typically 14)
l4-hdr-offset: Offset to L4 header
l4-proto: :tcp or :udp
old-daddr-reg: Register with original dest IP
new-daddr-reg: Register with new dest IP
old-dport-reg: Register with original dest port (network order)
new-dport-reg: Register with new dest port (network order)
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

full-natclj

(full-nat skb-reg
          data-reg
          ip-hdr-offset
          l4-hdr-offset
          l4-proto
          old-saddr-reg
          new-saddr-reg
          old-daddr-reg
          new-daddr-reg
          old-sport-reg
          new-sport-reg
          old-dport-reg
          new-dport-reg
          scratch-reg)

Perform both SNAT and DNAT in one operation. Useful for implementing a NAT gateway or load balancer.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register ip-hdr-offset: Offset to IP header l4-hdr-offset: Offset to L4 header l4-proto: :tcp or :udp old-saddr-reg: Original source IP new-saddr-reg: New source IP old-daddr-reg: Original dest IP new-daddr-reg: New dest IP old-sport-reg: Original source port (network order) new-sport-reg: New source port (network order) old-dport-reg: Original dest port (network order) new-dport-reg: New dest port (network order) scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Perform both SNAT and DNAT in one operation.
Useful for implementing a NAT gateway or load balancer.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
ip-hdr-offset: Offset to IP header
l4-hdr-offset: Offset to L4 header
l4-proto: :tcp or :udp
old-saddr-reg: Original source IP
new-saddr-reg: New source IP
old-daddr-reg: Original dest IP
new-daddr-reg: New dest IP
old-sport-reg: Original source port (network order)
new-sport-reg: New source port (network order)
old-dport-reg: Original dest port (network order)
new-dport-reg: New dest port (network order)
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

full-snatclj

(full-snat skb-reg
           data-reg
           ip-hdr-offset
           l4-hdr-offset
           l4-proto
           old-saddr-reg
           new-saddr-reg
           old-sport-reg
           new-sport-reg
           scratch-reg)

Complete SNAT operation: rewrite both IP and port.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register ip-hdr-offset: Offset to IP header l4-hdr-offset: Offset to L4 header l4-proto: :tcp or :udp old-saddr-reg: Register with original source IP new-saddr-reg: Register with new source IP old-sport-reg: Register with original source port (network order) new-sport-reg: Register with new source port (network order) scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Complete SNAT operation: rewrite both IP and port.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
ip-hdr-offset: Offset to IP header
l4-hdr-offset: Offset to L4 header
l4-proto: :tcp or :udp
old-saddr-reg: Register with original source IP
new-saddr-reg: Register with new source IP
old-sport-reg: Register with original source port (network order)
new-sport-reg: Register with new source port (network order)
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

snat-ipclj

(snat-ip skb-reg
         data-reg
         ip-hdr-offset
         l4-hdr-offset
         l4-proto
         old-saddr-reg
         new-saddr-reg
         scratch-reg)

Generate instructions for Source NAT - IP address only. Rewrites source IP and updates checksums.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register ip-hdr-offset: Offset to IP header from packet start l4-hdr-offset: Offset to L4 header from packet start l4-proto: :tcp or :udp old-saddr-reg: Register with original source IP new-saddr-reg: Register with new source IP scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Generate instructions for Source NAT - IP address only.
Rewrites source IP and updates checksums.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
ip-hdr-offset: Offset to IP header from packet start
l4-hdr-offset: Offset to L4 header from packet start
l4-proto: :tcp or :udp
old-saddr-reg: Register with original source IP
new-saddr-reg: Register with new source IP
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

snat-portclj

(snat-port skb-reg
           data-reg
           l4-hdr-offset
           l4-proto
           old-port-reg
           new-port-reg
           scratch-reg)

Generate instructions to rewrite source port.

For TC programs only.

skb-reg: SKB pointer register data-reg: Packet data pointer register l4-hdr-offset: Offset to L4 header from packet start l4-proto: :tcp or :udp old-port-reg: Register with original port (network order) new-port-reg: Register with new port (network order) scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg

Generate instructions to rewrite source port.

For TC programs only.

skb-reg: SKB pointer register
data-reg: Packet data pointer register
l4-hdr-offset: Offset to L4 header from packet start
l4-proto: :tcp or :udp
old-port-reg: Register with original port (network order)
new-port-reg: Register with new port (network order)
scratch-reg: Scratch register

Clobbers: r0-r5, scratch-reg
sourceraw docstring

xdp-rewrite-daddrclj

(xdp-rewrite-daddr data-reg ip-hdr-offset new-daddr-reg scratch-reg)

Rewrite destination IP address in XDP program. Does NOT update checksums - caller must handle checksum updates.

data-reg: Packet data pointer ip-hdr-offset: Offset to IP header new-daddr-reg: Register with new destination IP scratch-reg: Scratch register

Rewrite destination IP address in XDP program.
Does NOT update checksums - caller must handle checksum updates.

data-reg: Packet data pointer
ip-hdr-offset: Offset to IP header
new-daddr-reg: Register with new destination IP
scratch-reg: Scratch register
sourceraw docstring

xdp-rewrite-dportclj

(xdp-rewrite-dport data-reg l4-hdr-offset l4-proto new-port-reg scratch-reg)

Rewrite destination port in XDP program. Does NOT update checksums.

data-reg: Packet data pointer l4-hdr-offset: Offset to L4 header l4-proto: :tcp or :udp new-port-reg: Register with new port (network order) scratch-reg: Scratch register

Rewrite destination port in XDP program.
Does NOT update checksums.

data-reg: Packet data pointer
l4-hdr-offset: Offset to L4 header
l4-proto: :tcp or :udp
new-port-reg: Register with new port (network order)
scratch-reg: Scratch register
sourceraw docstring

xdp-rewrite-saddrclj

(xdp-rewrite-saddr data-reg ip-hdr-offset new-saddr-reg scratch-reg)

Rewrite source IP address in XDP program. Does NOT update checksums - caller must handle checksum updates.

data-reg: Packet data pointer ip-hdr-offset: Offset to IP header new-saddr-reg: Register with new source IP scratch-reg: Scratch register

Rewrite source IP address in XDP program.
Does NOT update checksums - caller must handle checksum updates.

data-reg: Packet data pointer
ip-hdr-offset: Offset to IP header
new-saddr-reg: Register with new source IP
scratch-reg: Scratch register
sourceraw docstring

xdp-rewrite-sportclj

(xdp-rewrite-sport data-reg l4-hdr-offset l4-proto new-port-reg scratch-reg)

Rewrite source port in XDP program. Does NOT update checksums.

data-reg: Packet data pointer l4-hdr-offset: Offset to L4 header l4-proto: :tcp or :udp new-port-reg: Register with new port (network order) scratch-reg: Scratch register

Rewrite source port in XDP program.
Does NOT update checksums.

data-reg: Packet data pointer
l4-hdr-offset: Offset to L4 header
l4-proto: :tcp or :udp
new-port-reg: Register with new port (network order)
scratch-reg: Scratch register
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