All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Added: for new features.
- Changed: for changes in existing functionality.
- Deprecated: for soon-to-be removed features.
- Removed: for now removed features.
- Fixed: for any bug fixes.
- Security: in case of vulnerabilities.
- Add function for setting and clearing interface flags.
- Bump MSRV to 1.77.
- Upgrade
ipnetwork
dependency from 0.20 to 0.21. This is a breaking change sinceipnetwork
is part of the public API.
- Add support for NAT anchors and rules.
- Add support for scrub anchors and rules. Since this modifies the public enums
AnchorKind
andRulesetKind
, it is a breaking change. They have been marked asnon_exhaustive
to prevent future additions from being breaking.
- Add function for listing all states created by PF anchor rules.
- Add function for removing individual states created by PF anchor rules.
- Upgrade
ipnetwork
dependency from 0.16 to 0.20. This is a breaking change sinceipnetwork
is part of the public API. - Upgrade crate to Rust 2021 edition.
- MSRV bumped to 1.69 due to use of
CStr::from_bytes_until_nul
. - Replace
error-chain
generated errors with manually implemented error types. This changes the public API of the error related types quite significantly. Also the chain of errors will be different. But it should be as easy to destructure and handle errors as before, and error messages should be at least as informative.
- Remove
PoolAddrList::to_palist
from the public API. It should never have been exposed. - Remove
build_internal
methods onFilterRuleBuilder
andRedirectRuleBuilder
. This was never supposed to be public, but a side effect of usingderive-builder
.
- Add function for clearing states related to an interface.
- Add support for Timex ICMP rules.
- Add
Icmp6Code::Redir
variant.
- Fix bug in ICMP
code
field value. It was not possible to have rules not checking thecode
field. It was always checked to be0
.
- Add support for matching filter rules against ICMP type/code fields.
- Upgrade ioctl-sys to 0.6.0. This adds support for Apple Silicon (M1).
- Minimum Rust version is now 1.42.0. A dependency use subslice pattern.
- Add support for user and group IDs to rules.
- Add option to reject packets instead of simply dropping them.
- Minimum Rust version is now 1.38.0
- Upgrade publicly re-exported dependency
ipnetwork
to 0.16.0.
- Upgrade the crate to Rust 2018.
- Upgrade publicly re-exported dependency
ipnetwork
to 0.15.0. - Minimum Rust version is now 1.32.0
- Travis CI job for the oldest supported Rust version, currently 1.26.0.
- Upgrade re-exported dependency ipnetwork to 0.13.
- Upgrade error-chain to 0.12 and re-export it.
- Removed building the C bindings in build.rs. Instead commit the generated bindings directly in the crate. This makes it possible to build the crate on non-macOS and on macOS without Xcode installed.
- Initial functionality able to control most parts of the PF firewall on macOS