Skip to content

Releases: EHfive/einat-ebpf

v0.1.5

09 Dec 06:49
817a597
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Prevent pkg_config from emitting Cargo linking instructions
  • Fix CLI arg --internal not being applied

Improve

  • Re-enable libbpf logging
  • TCX attach before all other links
  • Prefix match binding & ct addresses with external network CIDR
  • (build) Error out if build commands not exit with success
  • Allow using bpftool for stripping

v0.1.4

20 Nov 17:51
e6938a9
Compare
Choose a tag to compare

This is a hot-fix addressing build error on Rust 1.80 on which is the minimal version that einat requires to build.

See https://github.com/EHfive/einat-ebpf/releases/tag/v0.1.3 for v0.1.3 changes.

🐛 Bug Fixes

  • Elided lifetimes in associated constant

🧪 Testing

  • Add tests for einat skel

v0.1.3

19 Nov 17:49
ccb32a3
Compare
Choose a tag to compare

edit: Due to rust-lang/rust#115010 which triggers an error on Rust 1.80, it's required to build einat v0.1.3 with Rust >= 1.81. (fixed with 9e7bb8d which is not included in v0.1.3)

Highlights

  • Fix a bug that might cause silent packet drop, which has been observed on PPPoE interface for large packets.
  • Use pure-rust Aya loader by default, einat now has zero native dependency except libc on target platform.
    This should make einat be built more easily especially for cross-compilation.
  • Allow attaching eBPF programs with new TCX interface, aya loader only.
  • Allow do SNAT for specified internal network only
# do SNAT for internal packets with source of 192.168.1.0/24 only
einat -i extern0 --hairpin-if intern0 lo --internal 192.168.1.0/24

🚀 Features

  • Add pure-Rust aya loading backend support
  • Add config option to toggle TCX interface usage
  • Allow do NAT for specified internal network only
  • Add CLI options for snat_internals and bpf_loader

🐛 Bug Fixes

  • Workaround an unroll failure
  • (ebpf) Always pull first header bytes
  • Split EINAT_BPF_CFLAGS args

Improve

  • Increase log level of libbpf netlink error to DEBUG
  • Describe NAT44 enabling more specifically
  • Log eBPF loader used
  • Enable bpf_fib_lookup_external by default on kernel>=6.7

v0.1.2

13 Apr 15:51
871646c
Compare
Choose a tag to compare

🚀 Features

  • Implement interface monitoring and dynamic attaching
  • Add CLI option to print einat version

🐛 Bug Fixes

  • Filter out link address of all zero
  • Fix checksums calculation of IPv6 packets
  • Passthrough unsupported types of IPv6 packet

Improve

  • Change the default UDP/ICMP timeout to 2 mins
  • [breaking] Disallow user supplied if_index

v0.1.1

07 Apr 15:31
0617c66
Compare
Choose a tag to compare

🚀 Features

  • Add more CLI options

🐛 Bug Fixes

  • Guard against division by zero in libbpf-rs
  • Do not use unspecified IP address as external address
  • Fix port range merging algorithm
  • Prefer local address over prefix address, this fixes address selection on PPP interface

v0.1.0

05 Apr 10:41
f8024fe
Compare
Choose a tag to compare

Initial release, feedback is welcome!

Features

  • IPv4 to IPv4 NAPT
  • IPv6 to IPv6 NAPT
  • Endpoint Independent Mapping and Endpoint Independent Filtering for TCP, UDP and ICMP
  • Automatic reconfiguration for network interface address changes
  • Automatic hairpin routing rule setup