# Changelog
## [2.2.10] - 2023-04-20
### Breaking changes
 - N/A

### New features
 - Added CLI hiden `persist-nic-names` subcommand for OpenShift. (6f95011e,
   03c7b03b, 5f4ede55)
 - Support static IP address on with auto ip stack. (334fcf2e)
 - Support static DNS search with auto DNS nameserver. (b222d5b1)
 - Support matching interface with MAC address. (508bbe74)
 - Support DHCP hostname/FQDN option. (ebe3fc86)

### Bug fixes
 - Ignore `dhcp-client-id` when DHCPv4 disabled. (16b42e0e)
 - Validate IP address type matching with ip stack type. (5f1107fd)

## [2.2.9] - 2023-03-23
### Breaking changes
 - N/A

### New features
 - cli: New subcommand `format`. (4f8c1af5)
 - Including `controller` property on query. (85b682e9)

### Bug fixes
 - Do not use current interface which is unmanaged/external managed. (221521e2)
 - Fix problem when consuming down interface in bridge/bond/etc. (1728ae21)
 - cli: Ignore failure when reading /etc/nmstate folder. (2c03f3c1)
 - nmstate.service: remain after exit. (beb2fee9)
 - nmstate.service: Fix the dependency chain in systemd. (8bef2741, 9971c1ca)
 - Fix problem when changing veth peer. (a6a32a3f)

## [2.2.8] - 2023-03-10
### Breaking changes
 - N/A

### New features
 - Add VXLAN properties for EVPN use. (5a0ca407)
 - Support policy file in service mode. (2dc296e2)
 - clib: Introduce YAML support. (c40cbcb8)

### Bug fixes
 - Retry when NetworkManager starting up. (393828a6)
 - Fix `n-rxq-desc` and `n-txq-desc` properties. (b234f9dd)
 - Fix random failure when changing VLAN protocol. (b12effd5)
 - Fix fetching loopback information from NM plugin. (d3864c19)
 - Fix `make install` on Debian and Ubuntu. (4647cd11)
 - Adjust `is_match` to consider family and priority 0. (811db479)

## [2.2.7] - 2023-02-16
### Breaking changes
 - N/A

### New features
 - Support static route with auto ip. (4fa5689a)
 - Support VLAN 802.1ad and 802.1q protocol. (9923657a)
 - Support enabling SR-IOV and use future VF in single desire state. (20871bac)

### Bug fixes
 - Fix error when reverting SR-IOV VFs conf to default. (3bbb3c21)
 - Fix SR-IOV enabling and use in single desire state. (8f680180)
 - Use loopback interface as final fallback interface to store route rule. (fb7ace9d)

## [2.2.6] - 2023-02-09
### Breaking changes
 - N/A

### New features
 - Support Tokenised IPv6 identifiers. (91f8e45c)
 - Support local(255) route table. (a2051822)
 - Support enabling SR-IOV and use future VF in single desire state. (20871bac)

### Bug fixes
 - Fix error when removing a port with IP enabled. (23cf28d7)
 - Fix error when bringing down an unmanaged interface. (50148b63)
 - Treat empty string to match None in routes. (b52557b9)

## [2.2.5] - 2023-01-26
### New features
 - Support ECMP IPv4 routes. (b1b275cd)
 - Support OVS DPDK `n_rxq_desc` and `n_txq_desc` options. (936ac46a)
 - Support arbitrary DNS configuration. (a9397549)

### Bug fixes
 - Fix route destination address validation error. (012052c3)
 - Fix route next-hop-interface missing validation. (40970942)
 - Fix error when new DNS interface hold IPv6 link local address only. (4e21e359)
 - Fix error when adding an OVS internal interface to an empty OVS bridge. (d6cd548f)

## [2.2.4] - 2023-01-18
### Breaking changes
 - Support interface level `other_config`. (8ec213b8)

The rust API changed: `OvsBridgeBondConfig.other_config: Option<HashMap>`
changed to `OvsBridgeBondConfig.ovs_db: Option<OvsDbIfaceConfig>`.

The YAML API changed: The `other_config` under OVS bond should be stored under
`ovs-db` section.

### Bug fixes
 - Fix support DNS uncompressed IPv6 server. (8fbb93a5)
 - Fix validation error on route rule when `ip-to` and `ip-from` is empty string. (c2e69269)
 - Fix `group-fwd-mask` conflict with `group-forward-mask` Linux bridge option. (e079f1d)
 - Fix partial detaching ports in OVS bond interfaces. (e2b3ea72)
 - Fix verification error when OVS daemon is off. (ae3f45a7)
 - Fix MPTCP error in older NetworkManager. (f38da12c)

## [2.2.3] - 2023-01-09
### Breaking changes
 - Minimum supported rust version changed from 1.60 to 1.58. (d2f669ed)

### New features
 - Support OVS VLAN filtering in trunk mode. (dce50734)
 - Support parital modification of SR-IOV VF config. (92827cbb)
 - Querying OVS database instead of NM daemon. (625fdb7a)

### Bug fixes
 - Fix regression on VRF interface. (3c88135d)
 - Improve NM retry. (2a506379)
 - Improve NM checkpoint refresh. (94c7341a)
 - Fix LLDP error on `neighbors` property. (0a6fac0e)
 - Improve state merging. (19133302)
 - Fix error when moving dns from port to controller. (f619d8b4)
 - Empty IPv4 address should be considered as disabled. (23535503)
 - Auto manage ignored port in desired controller. (399c46b2)
 - Fix error when searching default route table ID for route rule. (053db219)
 - Raise proper error when desired IPv6 enabled with MTU < 1280. (76379ae9)

## [2.2.2] - 2022-12-13
### Breaking changes
 - N/A

### New features
 - Support `iif` and `action` in IP route rule. (81c661c2)
 - Support loopback interface. (82a78a33)
 - Support of `controller` property for attaching and detaching ports.
   (100cf325)
 - Support IPv6 link local address as DNS nameserver. (e1cae112)

### Bug fixes
 - Fix error when desired no DNS changes. (c7d22d9f)
 - Fix serialization of linux bridge VLAN trunk tags. (7a5d7639)
 - Fix error when moving OVS system interface to linux bridge. (891ab964)
 - Fix OVS VLAN with access mode with tag 0. (9f92170c)
 - Fix DNS probelm when running on NetworkManager 1.41+. (fd697fce)
 - Mark unsupported interface as ignored. (44199b3f)

## [2.2.1] - 2022-10-17
### Breaking changes
 - Minimum supported rust version 1.60. (e997a2bb)

### New features
 - Support IP route rule fwmark and fwmask. (95f1c193)
 - Support `dns-data` in NetworkManager 1.41+. (89d2fb0b)
 - Support IP route rule `from all to all`. (c53dc568)
 - Support bond `balance-slb` option. (16dadebe)
 - Support custom metric for DHCPv4 and IPv6-RA routes. (288014f1)
 - Introduce nmpolicy. (badcee4c)

### Bug fixes
 - Fix deleting interface created by iproute. (dcea700a)
 - Fix infiniband parent UUID problem. (883f36fb)

## [2.2.0] - 2022-10-17
### Breaking changes
 - Change of old behaviour: allow extra IP address found in verification stage.
   (a4c76a69)

### New features
 - Support querying `min_mtu` and `max_mtu` of ethernet. (ae26ec3d)
 - Support MPTCP. (d3c67303)
 - Conditional compiling by cargo feature. (592d24d0)
 - Support referring interface using SR-IOV PF name and VF ID. (13cec241)
 - Support reverting SR-IOV VF settings. (d46ecb63)
 - Filter BGP route at kernel side. (1e1dfea7)
 - Treating state:down as autoconnect false. (b8532490)

### Bug fixes
 - Allow partial consuming port interface from ignore to up. (f5eb8e90)
 - Mark linux bridge port as changed if desire `vlan: {}`. (28f7e918)
 - Fix the handle of external managed interface. (5d23fa7b)
 - Support partial editing on ovs-db global config. (b35b76ea)
 - Better output by unescaping the `\n` for nmstatectl `gc` mode. (e92e0dce)
 - Fix issue when OVS bridge port not mentioned. (9b85dd8e)
 - Fix moving bridge port to bond. (d2c40c3a)
 - Fix genconf mode for OVS `external_ids`. (8e723a15)
 - Fix DNS store in `genconf` mode. (da3d2301)
 - Show veth interface as `type: veth`. (e94a54fa)
 - Merge table ID from current. (b6763fa2)
 - Support `nmstatectl set -` for STDIN input. (586d404b)
 - Do not verify absent real NIC. (afd380e1)
 - Fix the bond `ad_select` option. (cd2c262e)
 - Fix dbus value type of coalesce-adaptive RX/TX. (babbd2f7)
 - Replace non-breaking space with normal space in nmstatectl. (f0c37d43)
 - Deny unknown field in NetworkState deserlialization. (6bd90540)
 - Support to route rules in gen_conf mode. (82307e69)
 - Resolve the unknown interface to ethernet in gen_conf mode. (940e3eeb)
 - Fix the support of description in gen_conf mode. (7b940909)

## [2.1.4] - 2022-08-10
### Breaking changes
 - N/A

### New features
 - Add suppoprt to `ports` keyword for bond, bridge and VRF. (919b1166)

### Bug fixes
 - Fix compile warning on Rust 1.61. (d9fe1aea)
 - Fix SONAME of c binding to `libnmstate.so.2`. (7fb28f46)
 - Fix bond integer option. (3a1453c1)
 - Ignored interface is still ignored even mentioned in port list.
   (1299223f, 275d9a57)

## [2.1.3] - 2022-07-27
### Breaking changes
 - N/A

### New features
 - Add suppoprt to `wait_ip` property. (ed7ab24)
 - Support integer bond mode. (5746b04)

### Bug fixes
 - Fix route entry error due to metric difference. (b55757d)
 - Update NM connection for state `down`. (e342e47)
 - Preserve current IP configuration from unmanaged interfaces. (c4d97f0)
 - Fix gc showing configuration files for `down` interfaces. (81d8099)
 - Fix several problem with the IP configuration. (8915d19)
 - Include routes and route rules when showing an interface with cli. (da2aea5)
 - Hide `addr-gen-mode` if IPv6 is disabled. (48d42aa)
 - Fix VRF verification failure due to port order. (37b6489)

## [2.1.2] - 2022-06-30
### Breaking changes
 - N/A

### New features
 - Add support to VLAN protocol for linux bridges. (182e5f5)
 - Add nmstate.service support. (5fa085a)

### Bug fixes
 - Fix OVS interfaces with the same name when using gen_conf. (156c11a)
 - Fix bond fail_over_mac "follow" mode. (628aa72)
 - Fix OVS interfaces activation race conditions. (fc1da22)
 - Fix applying different running and config hostname. (5289661)

## [2.1.1] - 2022-06-07
### Breaking changes
 - N/A

### New features
 - Add support of static hostname modification. (5accbd1f)
 - Add support of logging in C and Python binding. (b1944e78)
 - Add support of client ID in DHCPv4. (cda236c5)
 - Add support of DUID in DHCPv6. (c75ccee3)
 - Add support to rx-queue in OVS-DPDK. (437e4a98)
 - Add generate configuration support to golang binding. (dc2f69d8)

### Bug fixes
 - Fix error when both autoneg true and rx/tx defined. (e3921405)
 - Generate stable UUID for keyfile of NetworkManager. (fc6d45db)
 - Fix error when deleting route rule on absent interface. (de16ec39)
 - Fix error when deleting route on absent interface. (b034a5d1)
 - Show IP as disable instead of hide for port. (2c1402b1)
 - Fix racing probelm on connection deactivation and deletion. (e421421d)
 - Wait on device deactivating on rollback. (b42dc8c5)
 - Fix absent action of OVS bridge with the same name. (68a8c775)
 - Normalize MAC address before verification. (9b30b28e)

## [2.1.0] - 2022-04-21
### Breaking changes
 - Switched to all rust based. We tried our best to avoid breakage of
   backwards compatibility. (e7da681f)

### New features
 - N/A

### Bug fixes
 - N/A

## [2.0.0] - 2022-02-14
### Breaking changes
 - Drop team support. (601ca60)
 - Drop jsonschema support. (2599d3a)
 - Drop varlink support. (ce1a4b8)
 - Drop `slave` support. (ebc8082)

## [1.2.1] - 2021-02-10
### New features
 - Add support to multipath routes. (0eb2c33)
 - Add support to ovsdb query and changes in nmstate-rust implementation. (8172369)
 - Add support to veth interfaces in nmstate-rust implementation. (39c605e)
 - Add support to VXLAN and VRF in nmstate-rust implementation. (f963eae, 544ba15)
 - Introduce commit and rollback in nmstatectl-rust. (ed6eeb1)
 - Allow changing DNS search and server only. (932e3a9)
 - Add support to OVS-DPDK. (8f8743d, 7ff801a)
 - Add support of SR-IOV VLAN and QOS. (36dd02a)

### Bug fixes
 - Report boot protocol routes in the route state. (b881999)

## [1.2.0] - 2021-12-15
### New features
 - Introduce experimental support for a rust rewrite. This includes support for
   linux-bridge, ovs, vlan, ethernet, dummy and veth interfaces.
 - Add support of copy-mac-from to OVS bridges. (238f48f)

### Bug fixes
 - Fix verification error when modifying SR-IOV VFs number. (3693aa6)
 - Fix error message when no suitable interface can be found for name servers. (de01481)
 - Fix verification error due to NM.connection.uuid ovsdb entry. (5954f91)
 - Fix error when setting IPv6 canonical addresses for DNS nameservers. (a0906ee)
 - Fix verification error on IPv4/IPv6 route empty next-hop-address. (33e7272)
 - Preserve existing ethtool configuration when not specified in desired state. (b1cb57d)

## [1.1.0] - 2021-07-15
### New features
 - Support `accept-all-mac-addresses` property. (2df9c6a)
 - Support ethtool pause, feature, ring and coalesce options. (4e118b1, 258a280, 1ea97bf, b65ab5a)
 - Introduce `include_secrets` on libnmstate and `--show-secrets` in nmstatectl. (a310862)
 - Introduce `nmstate-autoconf` cli tool. (a463a3c)

### Bug fixes
 - Fix error when configuring DNS without desired interfaces. (08d3874)
 - Fix wrong warning about mismatching MAC address in bond options. (3463c8e)
 - Fix failure when modifying VLAN/VXLAN ID. (a673459)
 - Fix failure when removing route from different table than default. (73f5230)
 - Fix bond `tlb_dynamic_lb` option. (8915f5c)
 - Fix bond preserving `all_slaves_active` option. (94c036b)
 - Fix bond validation error when `fail_over_mac` is enabled. (404294a)
 - Use permanent MAC address for `Interface.COPY_MAC_FROM`. (e873491)
 - Fix error when creating SR-IOV VFs with the `bnxt_en` driver. (ea9c6d2)
 - Fix modifying OVS interface using the same name as OVS bridge. (84b2e90)
 - Fix adding a route rule for a OVS interface. (76db7c2)

## [1.0.2] - 2021-02-18
### New features
 - Support multiconnect profiles. (2c60c834)
 - Support bond vlan+srcmac tx hashing option. (ebf5777)
 - Support routes created by iproute command. (f39f763)
 - New property `Inetrface.COPY_FROM_MAC` on bridge and bond interfaces. (b089323)
 - Support IEEE 802.1X authentication. (f9a1da3)

### Bug fixes
 - Fix removing OVS `external_ids` settings. (57e2547)
 - Fix modification of OVS `external_ids` settings. (c99e708)
 - Fix removing IPv6 default gateway. (fd21172)
 - Improved the reliability on activating large amount of interfaces. (cbe5b57)
 - Fix creating a veth interface with an ethernet peer. (e17e70e)
 - Remove SR-IOV VF profiles when reducing `Ethernet.SRIOV.TOTAL_VFS` in the PF. (f5f636f)

### Breaking changes
 - Deprecate the nmstatectl `set` argument in favor of `apply`. (be8af16)

## [1.0.1] - 2021-01-15
### New features
 - Support changing external_ids of OVS system interfaces. (c76f32c)
 - Support showing running config. (9ebb8d3)
 - Support configuring veth interfaces. (c22e386)
 - Support managing `Open_vSwitch` table. (e35c6f5)

### Bug fixes
 - Sort OVS ports by their name. (11243cc)
 - Fix varlink logger for unexpected strings. (f178d89)
 - Raise NmstateValueError when desired interface is orphan. (453f0b0)
 - Fix error of mixed case for Linux bridge group address. (f460b01)
 - Fix validation error for interfaces marked as absent. (1e4e956)
 - Wait until SR-IOV VFs are created on kernel. (cda14e6)
 - Fix timeout on activation/deactivation 1000 interfaces. (93a7da9)
 - Fix error on finding the kernel interface index for an interface. (5bdd078)

## [1.0.0] - 2020-12-07
### New features
 - Manage state for route rules. (16c8fa9)
 - Support MAC VTAP. (4ffffa0)

### Bug fixes
 - Allow VRF port to hold IP information. (1455181)
 - Fix removing IPv6 route rules. (b14532c)
 - Use default mac address when an interface does not have one. (0738427)
 - Do not fail when reporting OVS interfaces using libnm through dbus. (8168645)
 - Do not remove unmanaged orphan interfaces. (3f88096)

### Breaking changes
 - Deprecate the `ports` for team interfaces, please use `port` instead. (dbb712e)
 - Nispor 1.0.0 or greater is now required. (6dec9a5)

## [0.4.1] - 2020-10-06
### New features
 - Support MAC VLAN. (963a04d)
 - Support IP over InfiniBand. (3ef8546)
 - Support Virtual Routing and Forwarding. (29fda8c)
 - Support of multiple gateways. (551df30)
 - Support ignoring specific interface via `state:ignore`. (dc13851)

### Bug fixes
 - Plugin with `NmstatePlugin.is_supplemental_only == True` will not
   add new interface to `libnmstate.show()` results. (fe2a0f9)
 - Allowing multiple dual stack DNS name servers. (0c3a64b)
 - Fix crash when OVS interface is using the same name of OVS bridge. (de3de71)
 - Change NetworkManager plugin as optional. (fc3b311)
 - Keep child interface when bond mode change. (4a7c174)
 - Don't reset bridge options for empty bridge options. (83fd948)
 - Sort routes base on metric and next_hop_address also. (da12b9b)
 - Do clean up even checkpoint rollback/destroy failed. (cda87df)
 - The vlan and vxlan interface cannot have ip when subordinated. (ff3b731)
 - Fix None con_profile race condition on SR-IOV interface. (7584d46)
 - Fix profile deletion on virtual interface. (b2ac0f4)
 - Fix timeout on profile deactivation. (0d8940d)
 - Ignore invalid bond optoin ad_actor_system=00:00:00:00:00:00. (1423258)

### Breaking changes
 - Make python3-varlink as hard requirement. (4637b60)
 - Deprecate the `Bond.SLAVES`, please use `Bond.PORT` instead. (b9d01752e)
 - Deprecate the `OVSBridge.Port.LinkAggregation.SLAVES_SUBTREE`, please use
   `OVSBridge.Port.LinkAggregation.PORT_SUBTREE` instead. (b9d01752e)
 - Deprecate the `OVSBridge.Port.LinkAggregation.Slave`, please use
   `OVSBridge.Port.LinkAggregation.Port` instead. (b9d01752e)
 - Do not raise `NmstateVerificationError` for bond option mismatch. (5b6f31f)

## [0.4.0] - 2020-08-28
### New features
 - Providing varlink interface via nmstatectl.
 - Support managing interfaces created by iproute tools.
 - The nmstatectl show <interface_name> could filter route table learn from
   DHCP/Autoconf.
 - Support modifying the route table ID for DHCP/Autoconf.

### Bug fixes
 - Could add route rule targeting route table learn from DHCP/Autoconf.
 - Fix verification failure on unknown interface.
 - Fix the logging of checkpoint creation.
 - Sort the OVS internal interfaces and OVS bond interfaces.
 - Improve performance by skipping reapply call on deactivated interface.
 - Default to `InterfaceState.UP` if not defined.

### Breaking changes
 - New dependency introduced `python3-nispor` for querying kernel runtime
   network state.

## [0.3.5] - 2020-08-28
### Bug fixes
 - Allowing remove all interfaces from OVS bridge.
 - Fix converting memory-only profile to persistent.
 - Fix adding OVS bond to existing OVS bridge.
 - Remove inactive profile for desired interface.
 - Do not report MTU if it is 0.

## [0.3.4] - 2020-07-24
### Bug fixes
 - Fix removing the DNS config.
 - Fix Linux Bridge integer option round up/down on 250HZ kernel.
 - Fix removing child interface.
 - Linux Bridge: Fix support replacing unmanaged ports.
 - SR-IOV: Raise an exception if the driver does not support a parameter.
 - Fix moving subordination from removed interface to new main interface.
 - Fix the failure when switching bond mode from 4(802.3ad) to 5(balance-tlb).

### Breaking changes
 - NetworkManager 1.26.0 or greater is now required.

## [0.3.3] - 2020-07-02
### Bug fixes
 - VLAN: Raise an error when VLAN MTU is greater than the base interface MTU.
 - Support IP network address with host bits(e.g. 192.0.2.251/24).
 - Show the OVS bond name first in nmstatectl show.
 - Fix random rollback timeout.
 - Fix error due to activation of unknown interface.
 - Fix the support of multiple state files when using nmstatectl.
 - Fix remove DNS config.
 - Improve the performance by eliminating the repeat check of ovs daemon status.

## [0.3.2] - 2020-06-15
### New features
 - Support third party plugin written in Python.
 - Support LLDP.
 - New OVS DB plugin for modifying OVS interface `external_ids`.
 - Expanded the support of linux bridge options.
 - Support applying desire state which only valid till next reboot.
 - Support OVS patch port (requires NeworkManager 1.22.16+ or 1.24.4+).

## [0.3.1] - 2020-06-08
### Bug fixes
 - Wait until the rollback is completed.
 - Fix base interfaces removal, VLAN/VXLAN interfaces will be removed automatically.
 - Fix all ports removal of a controller interface.
 - Interfaces state is not required when editting DNS/route/routerules.
 - Fix routes lose when editting DNS.
 - Interface is default to `state:up` when is not defined in desired state.
 - Differentiate DOWN and ABSENT state. DOWN is not removing the profile anymore.

## [0.3.0] - 2020-05-07
### New features
 - Linux Bridge: Support VLAN filtering.
 - Add --version and version command in nmstatectl.
 - Support 3+ single stack DNS nameservers: https://bugzilla.redhat.com/1816043
 - Allow route rule filtering by interface when showing.

### Bug Fixes
 - Bond: Fix switch between miimon and arp_interval: https://bugzilla.redhat.com/1806549
 - Bond: Fix switch bond mode from 1 (active-backup) to 5 (balance-tlb).
 - Bond: Allow miimon=100 when ethernet setting not included: https://bugzilla.redhat.com/1806549
 - Bond: Allow missing arp_ip_target when ARP monitoring is disabled.
 - SR-IOV: Properly return when the device not exists.
 - SR-IOV: Fix verification due to MAC address upper or lower cases: https://bugzilla.redhat.com/1818750
 - SR-IOV: Raise an exception when a SR-IOV parameter is not supported by driver: https://bugzilla.redhat.com/1819588
 - Fix verification errors due to outdated values.
 - Report DNS nameservers and domains only once: https://bugzilla.redhat.com/1806969
 - OVS: Raise an exception if the necessary services are not running.
 - Linux Bridge: Show unmanaged ports: https://bugzilla.redhat.com/1806452
 - Team: Fix verification error due to unsorted ports.
 - Raise an exception when IP configuration is enabled in ports.
 - Raise warning if interfaces exceeds 1000 in a single desired state.
 - Support route rule host without prefix length.

### Breaking Changes
 - Enforce keyword args for APIs functions.
 - Drop LinuxBridge_* constants support.

## [0.2.6] - 2020-02-24
### New Features
 - Linux Bonding: Support numeric values for options.

### Bug Fixes
 - Linux Bonding: Fix "fail_over_mac" support with active backup bond mode.
 - Linux Bonding: Fix "arp_ip_target" bond option support.
 - OVS Bridge VLAN: Use "unknown" value for unsupported modes.
 - Fix partial editting for DNS configuration.
 - Report only non-default bonding option values.
 - Fix switching from static IP to DHCP/Autoconf.


### Known Issues with NetworkManager Version 1.22.8
 - All changes to bridges might disrupt their connectivity.
 - Cannot detach a system port from an OVS bridge.
 - Sometimes, NetworkManager may throw a "Failed to find a compatible device for this connection" error.
 - Cannot set bond option with updelay=0,miimon=0.
 - Cannot set bond option with miimon=100,arp_interval=0.

## [0.2.5] - 2020-02-19
### Breaking changes
 - Deprecate specifying keyword arguments as positional arguments in the public methods.
   This will become a hard failure in Nmstate-0.3.0 and later and it affects the following functions:
   - "libnmstate.apply()"
   - "libnmstate.commit()"
   - "libnmstate.rollback()"
   - "libmstate.show()"

 - NetworkManager 1.22.8 or later is now required.

### New Features
 - Report missing NetworkManager plugin during validation.
 - Support OVS Link Aggregation (Bonding).

### Bug Fixes
 - Fix "AtributeError" when editing an existing OVS interface.
 - Do not remove ports implicitly when removing the controller interface.
 - Fix team interface port support.
 - Prevent virtual interface removal after DHCP or IPV6-RA timeout.
 - Get Linux Bonding options from kernel instead of reading the NetworkManager configuration.

### Known issues when using NetworkManager 1.22.8
 - All changes to bridges might disrupt their connectivity.
 - Cannot set Linux Bond option to "fail_over_mac=1".
 - Cannot detach a system port from an OVS bridge.
 - Sometimes, NetworkManager may throw a "Failed to find a compatible device for this connection" error.

## [0.2.4] - 2020-02-12
### Bug Fixes
 - Reduce minimal required MAC address length to 4 octets
 - Warn early when the same interface name is mentioned multiple times

### New Features
 - Raise NmstateTimeoutError on mainloop timeout

## [0.2.3] - 2020-02-05
### Bug Fixes
 - Reduce the delay before the verification step to 0.5 second.
 - Fix dynamic IP configuration with no server response.
 - Fix OVS port name limit.

## [0.2.2] - 2020-02-04
### Breaking changes
 - NetworkManager 1.22 is required now.

### New Features
 - Team interface support.

### Bug Fixes
 - Fix file descriptor leak.
 - Get SR-IOV VFs configuration from kernel instead of reading the NetworkManager configuration.
 - Fix DHCPv4 with static IPv6.
 - Wait a short time before verification to allow the network state to stabilize.
 - Properly delete ovs-port profiles.
 - Use dhcp-iaid='mac' on dynamic IPv6 configuration.

## [0.2.1] - 2020-01-13
### Breaking Changes
 - Deprecations in `libnmstate.schema`:
    - 'LinuxBridge.GROUP_FORWARD_MASK' -> 'LinuxBridge.Options.GROUP_FORWARD_MASK'
    - 'LinuxBridge.MAC_AGEING_TIME' -> 'LinuxBridge.Options.MAC_AGEING_TIME'
    - 'LinuxBridge.MULTICAST_SNOOPING' -> 'LinuxBridge.Options.MULTICAST_SNOOPING'

### New Features
 - Support SR-IOV VFs configuration.
 - Introduce libnmstate.__version__.

### Bug Fixes
 - Fix verification of route rules with 2+ route tables.
 - Support reapply on IPv6 changes.
 - Fix disable IP stack after enabled DHCP.
 - Fix MAC address pattern to support infiniband MAC addresses.
 - Report missing OVS NM plugin on profile activation.
 - Ignore existing unmanaged and unknown type bridge ports.
 - Fix bridge type interface state parsing.
 - Fix success check after interface deletion.
 - Read mac-address from sysfs when missing from NM (ovs-interface).
 - Get the SR-IOV total-vfs from sysfs instead from NM configuration.

## [0.2.0] - 2019-12-02
### Bug Fixes
 - Skip editing on unknown type interface

## [0.1.1] - 2019-12-01
### Breaking Changes
 - Removed the support of Python2. Require Python 3.6 or later version.
 - Increased minimum supported NetworkManager version to 1.20.
 - Deprecation in `libnmstate.schema`:
    - 'LinuxBridge.PORT_NAME' -> 'LinuxBridge.Port.NAME'
    - 'LinuxBridge.PORT_STP_HAIRPIN_MODE' -> 'LinuxBridge.Port.STP_HAIRPIN_MODE'
    - 'LinuxBridge.PORT_STP_PATH_COST' -> 'LinuxBridge.Port.STP_PATH_COST'
    - 'LinuxBridge.PORT_STP_PRIORITY' -> 'LinuxBridge.Port.STP_PRIORITY'
    - 'LinuxBridge.STP_ENABLED' -> 'LinuxBridge.STP.ENABLED'
    - 'LinuxBridge.STP_FORWARD_DELAY' -> 'LinuxBridge.STP.FORWARD_DELAY'
    - 'LinuxBridge.STP_HELLO_TIME' -> 'LinuxBridge.STP.HELLO_TIME'
    - 'LinuxBridge.STP_MAX_AGE' -> 'LinuxBridge.STP.MAX_AGE'
    - 'LinuxBridge.STP_PRIORITY' -> 'LinuxBridge.STP.PRIORITY'
    - 'OVSBridge.PORT_NAME' -> 'OVSBridge.Port.NAME'
    - 'OVSBridge.FAIL_MODE' -> 'OVSBridge.Options.FAIL_MODE'
    - 'OVSBridge.MCAST_SNOOPING_ENABLED' -> 'OVSBridge.Options.MCAST_SNOOPING_ENABLED'
    - 'OVSBridge.RSTP' -> 'OVSBridge.Options.RSTP'
    - 'OVSBridge.STP' -> 'OVSBridge.Options.STP'


### New Features
 - Support disabling IPv6 persistently.
 - Support compressed IPv6 address.
 - Support reapply on MTU changes.
 - Support activation interface without blocking on DHCP results.
 - Support SR-IOV.
 - Support source routing via route rule.
 - Support of VxLAN interface in schema without implementation.
 - Support of Team interface in schema without implementation.
 - Support of VLAN filtering in schema without implementation.
 - Support of OVS Bonding in schema without implementation.
 - Support of OVS VLAN in schema without implementation.

### Bug Fixes
 - Prioritize base iface activation before the vlan.
 - Ignore not active failure when deactivating.
 - Increase main loop timeout to support the linux bridge STP.
 - Detach ports without deleting them.
 - Fix race problem on port been deactivated by controller.
 - Prioritize controller interfaces activaction.
 - Don't disable IPv6 on down interface.
 - Raise exception when the NM service is not running.
 - Introduce nmstatectl man page.
 - Allow empty interface description.
 - Change DHCP and IPv6-RA address selction based on MAC address only.
 - Fix race problem when IPv6 is disabled.
 - Handle race problem when OVS bridge is deleting.
 - Handle bond get_info() while deleting.
 - Drop type attribute of OVS port.
 - Treat disabled IPv6 as OK to reapply.
 - Mark device as managed before activate.
 - Fix ActiveConnection.is_activating.
 - Fix the incorrect interface state when device in IP_CHECK state.
 - Discard IP stack when disabled for verification.
 - Explicitly remove any virtual device.
 - Delete inactive profiles when editting an interface.
 - Explicitly delete device even in DEACTIVATING state.

## [0.0.8] - 2019-07-25
### New Features
 - Support reapply configuration without link down when possible.
 - Relicensed to LGPL 2.1+.
 - Allow editing existing interface without specifying the type property in the
   desired state.

### Bug Fixes
 - Allow adding a port to the Linux bridge by specifying only its name.
 - Support IPv6 stack disable.
 - Allow enabling IPv6 with empty address.
 - Recover from an abnormal failure when libnmstate is re-used in a process.
 - DNS: Preserve DNS config with empty state.
 - Fix random failure on showing interface as done when creating bond/linux
   bridge
 - Do refresh in libnm on each call of show().
 - Allow removing ports from parents while keeping their interfaces up.
 - Do not remove ports that are mentioned with state UP.
 - Support ports swap between controllers.
 - API: Expose IP constants through libnmstate.schema.
 - PY3: Fix deprecation of array.tostring().
 - Fix IPv4 enabled criteria: When DHCP is enabled, it implies IPv4 is enabled.

## [0.0.7] - 2019-06-13
### New Features
 - Support editing DNS client configuration.
 - Support editing IP routes.
 - API: Promote the public API to libnmstate level:
    * libnmstate.show()
    * libnmstate.apply()
    * libnmstate.commit()
    * libnmstate.rollback()
    * libnmstate.error
    * libnmstate.schema

### Bug Fixes
 - Optimize new and existing interface processing when applying state.

## [0.0.6] - 2019-04-24
### New Features
 - Support manual transaction control.
 - Support querying DNS client configuration.
 - Support querying IP routes.
 - Support changing MAC address.

### Bug Fixes
 - nmstatectl: Handle state editing conflict.
 - apply: Handle commit/rollback errors.
 - nm.checkpoint: Handle DBusExceptions.
 - Fix build on old setuptools.
 - nm: Exit with a human readable error when missing libnm introspection.
 - state: Rebuild the ifaces state on each call to the state getter.
 - metadata: New created iface entry should include a name.
 - state: Relocate the remove func of absent/down ifaces into State.
 - apply: Pass the State object to the metadata generator.

## [0.0.5] - 2019-03-12
### New Features
 - Support Open vSwitch internal interface.
 - Support ignoring DNS/routes/gateways from DHCP/Autoconf.

### Bug Fixes
 - nm device: Include safety checks when deleting a device.
 - nm: Delete explicitly OVS type interfaces.
 - show: Do not include the mtu entry for ovs-bridge.
 - show: Do not include ipv4/6 entries for ovs-bridge.
 - Unify the Nmstate exceptions to error.py.
 - verify: Sort bridge ports by name.
 - nm device: Delete connection profiles with no device.
 - nm ovs: Fix port interface detection.
 - nmclient: Explicitly create a new client object only in show.
 - apply: Remove unuseful leftover code.
 - Add option for ignoring auto DNS and routes.
 - nmstatectl: Allow to set multiple states.

## [0.0.4] - 2019-01-23
### New Features
 - Support Linux Bridge.

### Bug Fixes
 - nm, device: Retry if activation fails in specific cases.
 - nm, nmclient: Allow mainloop to run the last action again.
 - apply: Fix OVS proxy port handling in the edit step.
 - nm, connection: Enable autoconnect by default.
 - nm, device: Skip activation of an already activating device.
 - nm, device: Fix ActiveConnection.is_activating.
 - nm, device: Activate based on the device or connection object.
 - nmstatectl: Output yaml by default.
 - nmstatectl: Remove extra newline from yaml output.
 - show: Sort interface state.
 - nm.bridge: Set only specified port options.
 - nm: Do not raise explcitly within the checkpoint context.
 - nm: Reduce noise when logging actions execution.

## [0.0.3] - 2018-12-20
### New Features
 - Support IPv4/IPv6 DHCP.

### Bug Fixes
 - NM/device: Handle activation failures for connections.
 - apply: Ignore `down` state (for virt iface) in verification step.
 - device: use per-action cancellable for activate_connection_async().
 - mainloop: support multiple cancellables.
 - Don't copy existing config when disabling IPv4/v6.

## [0.0.2] - 2018-11-29
### New Features
 - Support bond interface.
 - Support VLAN interface.
 - Support dummy interface.
 - Support ethernet interface.
 - Support Open vSwitch bridge.

### Bug Fixes
 - Initial release.
