IfState: Releases 2.5¶
The new IfState release 2.5 including a first bugfix release is available. This is a larger release containing multiple new features and improvements under the hood!
Release notes:
Rust-based Acceleration¶
libifstate-rs provides an optional rust-based acceleration for route and neighbor filtering. This can reduce processing time by more than 90% when using a routing daemon receiving the full table of the DFZ1.
Default MAC Address Selection¶
It is now possible to change the default MAC address selection for macsec, physical and vlan interfaces. It is now possible to override ifstates default behavior how the default MAC address is selected.
This might be important when using switchdev-based hardware with a limited support for virtual MAC addresses.
Tooling Modernization and Pytest¶
This release contains a huge tooling contribution as a result from the discussions at Saltsprint 2026. Based on the initial contribution the tooling was further extended by:
- migrating to
pyproject.toml/uv - adding pre-commit CI/CD
- implementing initial pytest based unit and functional testing
- building SBOM artifacts
Interface Alternative Names¶
Ifstate now supports configuring interface alternative names. The alternative name can be up to 255 characters long while the interface name can only be 15 characters long. The kernel enforces uniques of interface and alternative names.
interface:
eth4-2:
addresses:
- 2001:0db8:2804::1/64
alt-names:
- ACS_CUST2804
link:
kind: physical
ifalias: "Access Customer #2804 (Port 4/2)"
state: up
identify:
parent_dev_name: "0000:51:00.1"
parent_dev_bus_name: pci
On physical software routers and firewalls the alternative names could be used to make additional information available:
7: eth4-2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:00:5e:00:53:42 brd ff:ff:ff:ff:ff:ff
alias Access Customer #2804 (Port 4/2)
altname ACS_CUST2804
7: eth4-2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:00:5e:00:53:42 brd ff:ff:ff:ff:ff:ff
altname ACS_CUST2804
inet6 fe80::200:5eff:fe00:5342/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
clear_altnames setting in parameter.defaults to keep alternative names for interfaces that do not have a alt-names property.
!flatten Tag¶
The YAML parser for the configuration file got support for a !flatten tag. This allows to convert a nested list into a flat list. This can be used to extend lists from external files:
interfaces:
loop:
addresses: !flatten
- 192.0.2.1
- !include /etc/ifstate/additional-ips.yaml
link:
kind: dummy
state: up
- 198.51.100.1
- 203.0.113.1
- "2001:db8::"
Miscellaneous¶
IfState now has shell completion support. It is now also possible to configure interface link flags which might be required to support multicast in overlay networks. Missing netlink attributes have been added for various interface kinds.
The new sysctl_conf setting allows additional free-form sysctl configuration.
-
Default Free Zone ↩