# Changelog
## [2.2.39] - 2024-11-20
### Breaking changes
 - N/A

### New features
 - N/A

### Bug fixes
 - route: correctly compare the route's table and metric. (2ce6cb15)
 - route: correctly compare the route's next-hop. (b4f1aa61)

## [2.2.38] - 2024-10-24
### Breaking changes
 - N/A

### New features
 - N/A

### Bug fixes
 - nm ovs: Enable connection.autoconnect-ports for OVS port. (4c996abd)
 - gc: Fix trunk vlans for ovs port in gen_conf. (614c66dc)
 - nm: Preserve current IP setting for multiconnect profile. (23247afb)

## [2.2.37] - 2024-09-30
### Breaking changes
 - N/A

### New features
 - IPVLAN interface support. (50c267c9)

### Bug fixes
 - mac identifier: Fix error when attaching mac-based iface to bond. (0ebf1078)
 - packaging: Generate vendor tarbal for Rust 1.66 also. (2ef57297)
 - async: Use tokio::time::sleep in stead of std::thread::sleep. (b6e7adec)
 - policy: Sort the capture base on dependent relationship. (71ea2399)
 - nm: Handle `ipv6.method: ignore`. (3456e97b)
 - nm: Fix profile name changing. (a44f555a)
 - nm route rule: Only search desired interface for storing route rule. (36af0f85)
 - policy: Fix capture full state with simple line. (58389eee)
 - policy: Fix error when capture is mentioned in the right. (245fcb16)

## [2.2.36] - 2024-09-19
### Breaking changes
 - N/A

### New features
 - ipsec: support require-id-on-certificate. (90a56cc0)
 - route: Add support for route source. (d4487de1)
 - gen_conf: Support special route type. (2207c40b)

### Bug fixes
 - mptcp: Treat none as empty MPTCP flags in current state when verifying. (755333cb)
 - nm dns: Re-evaluate DNS settings if desired even not changed. (9fe7836c)
 - vrf: Skip serializing if port is undefined. (fa013cc3)

## [2.2.35] - 2024-08-20
### Breaking changes
 - Rust API: `VrfConfig.table_id` changed `u32` to `Option<u32>`.(2900bf5e)
 - Rust API: Use Box to wrap Interface enum entries. (5d5319ca)

### New features
 - Add 802.1x PEAP auth. (f43657da)

### Bug fixes
 - nm: Fix incorrect device-reapply call. (b1255c3d, 19e60c17)
 - nm: Change unknown device state log to debug. (20d72e7e)
 - nm: send lldp with correct D-Bus type INT32. (35557b0d)
 - gen_diff: Include context information for `gen_diff()`. (c34563d9)
 - gen_diff: Use original desired interface when creating new interface. (ee8c8a26)

## [2.2.34] - 2024-08-01
### Breaking changes
 - Set Minimum Supported Rust Version to 1.66. (ef4a5e58)

### New features
 - N/A

### Bug fixes
 - ovs bond: Deny unknown fields in ovs bond section. (d8453ea0)
 - vlan: make 'base-iface' optional for the desired state. (bd3cbc82)
 - nm: Increase reapply failure log to info level. (2600188b)
 - mac identifier: Prefer permanent MAC address. (bf4ff6c9)

## [2.2.33] - 2024-06-13
### Breaking changes
 - N/A

### New features
 - Provide permanent-mac-address when querying. (9d0f8c01)
 - Add support of SRIOV drivers-autoprobe (05d6b996)
 - Support DNS modification in kernel mode. (ddb04e8d)
 - Support modification of static route in kernel mode. (4088e470)
 - Add description to top level YAML/JSON API. (bb9981c7)

### Bug fixes
 - Fix error when purging DNS with empty server. (0a86028b)
 - Validate interface in desired port list of controller. (18677227)
 - Fix incorrect check on whether `vlan-default-pvid` changed. (018b91a9)

## [2.2.32] - 2024-05-30
### Breaking changes
 - N/A

### New features
 - C/Python binding: tidy up the input network state. (e5ecc3ce)
 - C/Python binding: Add support of `NetworkState::gen_diff()`. (9b7d882c)
 - rust: Provide async API. (486fab1c)

### Bug fixes
 - cli: Replace `ctrlc` crate with `tokio/signal`. (c67fc1d8)
 - vlan: Default `reorder-headers: true`. (a907b00e)
 - ip: Fix routes on empty address. (56d0749e)
 - ovs: Warn user when cannot connect OVS daemon but desired. (ca33ca51)

## [2.2.31] - 2024-05-09
### Breaking changes
 - N/A

### New features
 - IPSec: Add support to `leftsubnet` property. (d03a52f5)

### Bug fixes
 - N/A

## [2.2.30] - 2024-05-03
### Breaking changes
 - N/A

### New features
 - Add support to IPSec libreswan rightcert property. (19755bc)

### Bug fixes
 - Fix bridge port vlan refreshing if `vlan-default-pvid` changed. (4cdc816)
 - Do not allow bond port queue ID to overlap. (286d61c)
 - Fix referring to controller/parent when it is in-memory. (98f9155)

## [2.2.29] - 2024-04-24
### Breaking changes
 - N/A

### New features
 - N/A

### Bug fixes
 - Fix compilation on Rust 1.66. (f47eb86)

## [2.2.28] - 2024-04-22
### Breaking changes
 - N/A

### New features
 - New nmstatectl alias for show and apply, "s" and "a". (7c6d155)

### Bug fixes
 - Hide secrets in Debug trait of NetworkState. (649d443)
 - Always show vet interface with veth type. (115bcc5)
 - Normalize route table of current route when determining route removed. (96a5c77)

## [2.2.27] - 2024-03-20
### Breaking changes
 - N/A

### New features
 - Support TCP congestion window(cwnd) in route. (59f99632)
 - Support query interface driver. (67817c23)
 - New API to generate changed state. (fe5327a2)

### Bug fixes
 - Include driver information for `persist-nic-names` subcommand. (1129e46b)
 - nm: Protect global DNS config in checkpoint. (881373ba)
 - route rule: Append rule instead of overriding when iface defined. (88d3d3ef)

## [2.2.26] - 2024-03-13
### Breaking changes
 - Deprecate PrettyState class in Python API. (6b410dcf)

### New features
 - Allowing input multiple desire states for statistics. (9b808821)

### Bug fixes
 - packaging: Fix rpm build on Fedora. (c40f3ff0)
 - route: warn if the route is missing due to NM delay. (71dedc65)
 - Raise invalid argument error when desired OVS bridge with MAC. (a71eed31)
 - Auto managed ignored OVS port. (c7fd32e8)
 - Fix resolving token in array items for nmpolicy. (58a2fd6d)

## [2.2.25] - 2024-02-22
### Breaking changes
 - Removed the support of deprecated `slaves` in linux bridge, ovs bridge and
   bond. Please use `ports` instead. (2657650c, 51bdb012)

### New features
 - Support MacSec hardware offload. (1198339e)

### Bug fixes
 - ipsec: Treat DHCPv4 off with no static address as IPv4 disabled. (4d0f0829)
 - controller: Fix incorrect ports name matching when validating ports. (6dc9e880)

## [2.2.24] - 2024-02-08
### Breaking changes
 - Rust API: base_iface: Remove `prop_list`. (42936b17)
 - Rust API: ip: Remove the `prop_list` property. (bae6adb3)
 - Rust API: net_state: Remove `prop_list`. (85dbacc4)
 - Increase minimum supported NetworkManager version to 1.40. (511e83b4)

### New features
 - Add support of deprecated `slaves` property in ovs bond. (9565b963)
 - Support assigning static routes to interface without addresses. (fc4c72e6)

### Bug fixes
 - cli service: Allow user to opt-in on not deleting applied file. (733deba3)
 - ncl: Fix description of rollback command. (6698891e)
 - manpage: Fix incorrect document on `nmstatectl service`. (a6b0ab1d)
 - nm ipsec: Fix bug on modifying exist ipsec connection. (d64baf98)
 - route: Allow route destination `0.0.0.0/8` for non-unicast route. (25a73384)
 - Makefile: fix python install path for Python >= 3.12. (dd0c5aec)

## [2.2.23] - 2024-01-17
### Breaking changes
 - N/A

### New features
 - ipsec: Support `type`, `hostaddrfamily` and `clientaddrfamily` options. (d7d62db5)
 - ipsec: Add support of P2P IPSec tunnel. (74681912)

### Bug fixes
 - clib: Use build.rs to fix SONAME. (a199caf9)
 - rpm: Fix SONAME in RHEL 9 build. (57b1880b)
 - ip: Do not skip serializing allow-extra-address: false. (1f532a90)
 - ovs: Do not skip serializing `allow-extra-patch-ports`. (4023bd25)
 - base_iface: Do not skip serializing `copy-mac-from`. (f4139ad2)
 - ovn: Do not skip serializing state: absent. (8a63a7c0)

## [2.2.22] - 2024-01-05
### Breaking changes
 - N/A

### New features
 - Add support to HSR/PRP interface. (b23da648)
 - Add sriov vlan protocol support. (d2248623, b4981756)

### Bug fixes
 - package: Ignore minimum rust version. (108e0451)
 - service: Mark .applied with checksum. (dbb98e1d)
 - Cargo: Use optional dependency instead of internal feature. (9e4a36f5)
 - lldp: Simplify rust structs and serde. (ac1eb9d4)
 - ipsec: Fix error when `ipsec-interface` set to yes or a number. (9203d781)

## [2.2.21] - 2023-12-14
### Breaking changes
 - N/A

### New features
 - Support VLAN flags. (5780fccc)
 - Support `ipsec-interface`, `authby` and DPD options. (c81fa8a0)

### Bug fixes
 - Fix error on NetworkManager does not support bond-port. (e1ee8ea0)
 - CLI: Do not exit with error if stamp or systemd folder not found. (1e76eeb3)
 - Use new nispor 1.2.15 which fixes error on new kernel. (efe4c20d)
 - ipsec: Fix VerificationError on `leftrsasigkey: '%cert'`. (1420fb0e)

## [2.2.20] - 2023-11-30
### Breaking changes
 - Changed query output `valid-left` to `valid-life-time`. (c2809592)

### New features
 - Add support for the `route-type`. (f8c57a88)
 - Support generate statistic data. (54f4d6dd)

### Bug fixes
 - Fix `ipv4.dhcp-timeout` even when ip not desired. (6b6caeec)
 - Drop the filtering for the nispor loopback routes. (af88bb24)

## [2.2.19] - 2023-11-15
### Breaking changes
 - N/A

### New features
 - Support IpSec tunnel. (4a88d33d, 626714e3)

### Bug fixes
 - brdige/bond: Add support of `slaves` back as deprecated. (631ff655)
 - dns: Fix purging DNS config. (ab07783b)
 - dns: Fix DNS option `ndots`, `timeout` and `attempts`. (75e2f042)
 - ip: Do not convert auto IP to static IP. (a3ae6e3a)
 - clib: Fix SONAME for all linux build target. (0f8026e8)
 - go: Configure GOPROXY and GOSUMDB. (661ffd89)

## [2.2.18] - 2023-11-02
### Breaking changes
 - ovs: Align STP property of OVS bridge and Linux bridge. (2934b894)

### New features
 - nmpolicy: Allowing remove a property or section. (7b99493a)
 - Support appending static DNS before dynamic DNS. (56ecba6f)

### Bug fixes
 - SRIOV: Fix VerificationError on switchdev mode SRIOV. (3fcf1386)
 - nm: Fix `gc` mode for route rule action. (2ee3aaf9)
 - nm: Suppress unused_imports warning for nm_dbus. (0a01c28a)
## [2.2.17] - 2023-10-19
### Breaking changes
 - macsec: rename parent property to base-iface. (ccc6882b)

### New features
 - Support invoking dispatch script. (1bd1151d)
 - Support generate new network state to revert. (ab18b302)
 - Support for bond ports config. (4538b0a1)

### Bug fixes
 - ovn: Tidy up the ovs/ovn code. (c2d31e6a)
 - ip: validate prefix_length. (107382a9)
 - ip: don't check "ipv4 in ipv6" in sanitize without error checking.
   (a579e041)

## [2.2.16] - 2023-09-21
### Breaking changes
 - N/A

### New features
 - Support to MACsec interface. (14d307f2)
 - Support DNS options. (b77a1883)

### Bug fixes
 - Deny unknown field for global and iface ovsdb. (6baaa5ae)
 - Fix nmstatectl `persist-nic-names` on bond port. (2a2e36c1)

## [2.2.15] - 2023-08-23
### Breaking changes
 - N/A

### New features
 - N/A

### Bug fixes
 - OVN: mappings changes do not clear ext ids keys. (f0e5a8e6)
 - Fix DNS changes with OVS geneve interface holding IP. (dffaa0b0)

## [2.2.14] - 2023-07-26
### Breaking changes
 - Changed `EthtoolFeatureConfig` from type alias of HashMap into
   `struct` (37a100f5). No YAML/JSON API changes for this.

### New features
 - Support route rule option suppress-prefix-length. (b42197ae)
 - New OVS `allow-extra-patch-ports` option. (769fe911)

### Bug fixes
 - Fix ECMP route in `gen_conf` mode. (fe6002aa)
 - Preserve gateway when not desired. (2b766619)

## [2.2.13] - 2023-07-12
### Breaking changes
 - N/A

### New features
 - Support OVN mapping. (72b54fd9, 2efba01b, 6a87b702, 1a57b595, af2ffc39)
 - Support bond `arp_missed_max` option. (aeae2f7d, bbe63918)

### Bug fixes
 - Fix SR-IOV retry. (407f68fc)
 - Remove dependency on ipnet crate. (28e7d052)
 - Handle unknown interface type for SRIOV. (8764f450)
 - Perform pre-apply check before creating checkpoint. (c4b25a77)
 - Fix regression on waiting SRIOV. (bbd091cc)

## [2.2.12] - 2023-06-01
### Breaking changes
 - Rust API: BridgePortTunkTag renamed as BridgePortTrunkTag. (148ecd1)

### New features
 - Support `vlan-default-pvid` in bridge options. (e73b147)

### Bug fixes
 - Fix rollback blocked due to waiting for DHCP. (861110b)
 - Fix creating a VLAN or bridge above an interface with multiple NM profiles. (a463a28)

## [2.2.11] - 2023-05-16
### Breaking changes
 - N/A

### New features
 - Support OVS DPDK `netdev` datapath. (ac8a4dee)

### Bug fixes
 - Skip connection activation if its controller will do. (7f93c374)
 - Fix error when DHCP with auto IP address on STP enabled bridge. (8ea675b6)
 - Fix error when running test locally. (21d63ed6)
 - Do nothing for `persist-nic-names` when got `net.ifnames=0`. (c9fd1e80)
 - Include cargo vendor files for s390 linux. (dc6a2149)

## [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)
 - Support `gc` command. (627af31)

### 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 based 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.
