All notable changes to this project will be documented in this file.
- Prevent pkg_config from emitting Cargo linking instructions
- Fix CLI arg --internal not being applied
- 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
This is a hotfix addressing build error on Rust 1.80 on which is the minimal version that einat requires to build.
- Elided lifetimes in associated constant
- Add tests for einat skel
- 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
- 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
- Workaround an unroll failure
- (ebpf) Always pull first header bytes
- Split EINAT_BPF_CFLAGS args
- 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
- Implement interface monitoring and dynamic attaching
- Add CLI option to print einat version
- Filter out link address of all zero
- Fix checksums calculation of IPv6 packets
- Passthrough unsupported types of IPv6 packet
- Change the default UDP/ICMP timeout to 2 mins
- [breaking] Disallow user supplied if_index
- Add more CLI options
- 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
Initial release.