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.
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |