ifupdown2 3.10 release - #352
Open
julienfortin wants to merge 69 commits into
Open
Conversation
(cherry picked from commit e41af9241a175cc4221cea580cd087b3e30ec4da) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…g in ifupdown2 (cherry picked from commit 4c27bc1fbc8f11dc78d9ac119f95161685755bf3) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…other When a port moves between VLAN-aware bridges, processing order can leave the netlink cache pointing at the old bridge. The stale mapping prevents the port from being enslaved to the bridge selected by the current configuration. Use the configured bridge mapping whenever it differs from the cached mapping. Signed-off-by: Abhishek Agarwal (Networking SW) <abhishag@nvidia.com> (cherry picked from commit b76b133e1188c2780831f9b34c05d982db1a65b7) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Closing a socket on the main VRF device can require a path through one of its slaves. Taking every slave down first can leave the connection stuck in FIN-WAIT-1 and prevent its namespace from being released. Close sockets on the main VRF before taking slaves down, then close them again afterward to catch sessions reopened during that window. Signed-off-by: Andy Roulin <aroulin@nvidia.com> (cherry picked from commit 897ab792629aa4247a8d3bf375188dc5c9467664) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
(cherry picked from commit dba61d4a6fa44cd430d428049c94c0da43f65748) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
In 3.9 the encoding keyword argument of json.loads has been removed
any decoding needs to be done prior to the json.loads call.
sys.stdin.read() always return a string, so there's no need to do any
decoding anymore.
Tests:
- manual regression tests
- utf-8 tests:
$ echo '{ "auto": true, "name": "ñáöü" }' | ifquery -t json "ñáöü" -i -
auto ñáöü
iface ñáöü
$
(cherry picked from commit 58ca3b4479cbf3399fa5897c03a9c5b62781bbed)
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The kernel rejects gateway installation on an administratively down link. Skip gateway additions while KEEP_LINK_DOWN is active, but continue deleting gateways removed from the configuration. Signed-off-by: Nita MS <nkachhadiya@nvidia.com> (cherry picked from commit 9132b6cbf5aa4e2e0e61e968b8810b6db7d63459) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
(cherry picked from commit 857de67bcd9914b9f88571ca82fe11a6f03c8097) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
We have done few fixes in the past where dhclient process were getting terminated and there were stale dhclient pidfiles that were causing issues when trying to assign same dhcp ip as static IP. In earlier case, we fixed two things - a. workaround fix to cleanup the stale dhclient pids and force release the dhclient process. b. Fixing the actual culprit that was terminating the dhclient process to ensure no stale pids The current issues seems to be following - a. Either the dhclient process that was released is deleting the address but not clearing the cache on time (there is slight delay). Subsequently we try to force clear the cache which has a bug that prevents it from clearing the cache. Later when trying to assign static IP, it is skipped since the same address is already present in cache. Subsequently upon debugging we also found that there could be scenario where releasing of dhclient process would not result in deleting the address from the interface. Then even if we clear the cache, there will be failure when trying to assign static IP (same address) since it will complain that "Address exists" and not overwrite it. Later upon lease expiry the address will again get deleted and cause same issue. Fixes done: 1. Fixed the code for clearing of address cache to use address version instead of address family. Everywhere we are saving the cache with address version as key but while force clearing the cache we were using address family which is incorrect 2. When trying to force add a static address, we should ideally avoid checking the cache and try to add the address irrespective of whether the address cache has the address configured or not. Also in the same path, we should ensure that the address is deleted before attempting to add the address. 3. In one of the previous fix we were returning True in case of stale dhclient pid file existing when the process was terminated. Ideally we should be releasing the dhclient process to clean up the cache and still return False to indicate that dhclient is not actually running. This is required in the dhcp config scenario when it is expected to setup the dhclient process even in case a stale one exists. 4. We are forcing the static address add on an interface irrespective of whether dhclient process was running or not. We could have a scenario of someone manually running dhclient using some other pid file in which case we will not be able to clean up the address if the same address is assigned in dhcp server that the static address is trying to assign. (cherry picked from commit f0ca63883634d691e84ccc2f6d6e65f68d560112) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…tatic IP Recently we added a fix to force add static IP address irrespective whether we have dhclient process running previously or not. Ideally, we have "ifreload -a --diff" command if we do not want existing configs to be overwritten, however, the baseline behaviour also prevents overwriting existing IP address on the interface if it is same as the one that is getting configured. We need to add logic to force-reapply the static IP address only when we move from dhcp/dhcp6 to static IP address in order to avoid this regression. We cannot just rely on checking the dhclient process running since there are scenarios where the dhclient process is not running (due to some corner case scenario/bug) and still we need to force reapply the static IP address. For such cases, we have now added a check to force reapply static IP address only when previous address method on the ifaceobj is dhcp/dhcp6 and current address method is not dhcp. Unit Test: 1. Executed `ifreload -a` with interface static IP configured. Ensured that the interface static IP is not reconfigured. 2. Have neigh entries installed in kernel on a given IP interface. Execute `ifreload -a` and ensure the neigh entries are not deleted after ifreload. Signed-off-by: Abhishek Agarwal <abhishag@nvidia.com> (cherry picked from commit fbd4659079bf67bf9e07b341a8a6b5e69665cb32) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
We added a logic recently to release the dhclient process when stale pid exists when trying to check the dhclient.is_running. The motivation was to cleanup the state during config apply process The same API is also invoked during ifquery as well. Since ifquery is simply trying to check the dhclient process running or not, we should add check to not cleanup the stale pids in that sequence/flow. (cherry picked from commit 521ee1f6d935e0c90b653201bc43d4237f844ce7) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
For DHCPv6, when trying to check for the PID file to determine whether the DHCPv6 client is running or not, we are incorrectly checking for the v4 PID file instead of checking for the v6 pid file. Need to fix the pid file check in the code. (cherry picked from commit 2b3f0b0e3023a5967a10113ed4df9ff8080cf365) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…ort to bond-member 1. The bond addon module had logic to re-enable ipv6 if previous saved state had the interface as bridge-port. However, the previous saved state did not save bridge-port flag in link_privflags of the ifaceobj. inside sync_ifaceobj it was using compare function to overwrite the saved object or not. The compare function was not taking into account link_privflags between saved and current ifaceobj Hence it was not saving the state as bridge-port (link_privflags) for already saved ifaceobj Fix: Fixed the compare logic in iface.py code to include check for "link_privflags" as well 2. In diff mode, when moving the port from bridge to bond, there was no change detected for the interface. this is because the `__eq__` function for ifaceobj was not considering all the properties - ideally should re-use the compare object the sync_ifaceobj was not kicking in when interface moving from bridge to bond and hence the link_privflags state was not getting updated in saved state Fix: Use compare function in `__eq__` for ifaceobj class object 3. After fixing above two issues, the interface is now included in the diff objlist which allowed the schedule reload of the interface Once the schedule_reload operation happened on interface, the saved state got overwritten with the current state Later, during schedule_reload of bond interface, the logic to re-enable ipv6 was not kicked in again because it could not figure out the old state (which already got overwritten) Fix: we need to add a logic in interface address.py to re-enable ipv6 when it is no longer part of bridge. we can also remove the logic from bond.py that checks for old state to re-enable ipv6 - may keep it for now to ensure no other case is broken Signed-off-by: Abhishek Agarwal <abhishag@nvidia.com> (cherry picked from commit 94df840be1e3a53390b1106d5c2d19cf6c3e610b) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Mark regular-expression patterns as raw strings so imports do not emit invalid-escape SyntaxWarnings. Pattern semantics remain unchanged. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Treat numeric and string zero as configured values while preserving the existing fallback for absent or empty input. Forward zero through the addon, iproute2, and netlink construction so a custom timer can be reset instead of leaving stale running state. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The imported check raises in normal operation, but force and ignore-errors suppress that exception. Return an explicit failure so an invalid MTU is never applied. Validate before the cached-MTU shortcut so adding IPv6 to an existing sub-minimum interface is also rejected. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
… configured DHCPv6 release needs a link-local source address. A link-down interface has already lost that address by the time the DHCP addon runs, so release can fail and abort reload. Treat DHCP release failure as non-fatal after the link is intentionally down. Signed-off-by: Nita MS <nkachhadiya@nvidia.com> (cherry picked from commit 6a292af8bf79da7865b0578512416db1bdee3fb1) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…address changes IPv4 primary-address changes previously purged every address on the interface. That briefly removed unchanged IPv6 addresses and could withdraw IPv6 routes. Evaluate primary changes within IPv4 only. Preserve configured IPv6 addresses during an IPv4 reorder while still deleting IPv6 addresses explicitly removed from the configuration. Signed-off-by: Lohith CS <lcs@nvidia.com> (cherry picked from commit 43a14a8edf3975849242a4278c5be9cff295117c) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
… sync Avoid crashing in the bond reload path when the slave list is missing or a slave, such as a dummy interface, does not expose a permanent MAC. This keeps ifreload resilient for dummy-backed bond configurations. Normalize missing running slave state to an empty list and add regression tests for absent bond slaves and missing slave permanent hardware addresses. (cherry picked from commit 2349454f8f55abe4206f35b022c0560965b6a639) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…terfaces An interface configured under incompatible master types could be detached from its existing bond, bridge, or VRF and enslaved to another master. Reject conflicting ownership before changing link or protocol state, closing connections, releasing DHCP, creating a VRF device, or setting a new master. Signed-off-by: Lohith CS <lcs@nvidia.com> (cherry picked from commit ff71b0539e1da682924e88b6854be4cc652aa740) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…update When adding a port to a bridge - the port gets put into VLAN 1 this can cause packets to get leaked in VLAN 1 if the port is up and sends traffic before being put in the correct VLAN (if different than 1). To prevent this we need to set the port admin down. (cherry picked from commit 5682d60d05598565c148162e8912bd5dbbd4ad2f) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…evert) RCA: Whenever any new vlans/l2-vnis are added on the node, we seem to be flapping all the bridge-ports present part of the bridge (including vxlan device). As a result, this causes lots of churn in the network leading to traffic loss as well. Ideally, any new vlans/l2-vnis on the top of existing ones shouldn't lead to any traffic loss for the existing vlans/l2-vnis. In this instance, as all the devices including vxlan device is flapped, it leads to complete blackholing. Fix: Reverting the latest change flapping existing ports - we will only keep admin-down newly added ports to avoid packets leaking into VLAN 1. (cherry picked from commit d4e736c4ef25d826a33036a9ca9e3c291ed61a05) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…ort are admin-downed In the non-ifreload scenarios new brports stayed down. We need extra handling to bring them back up. (cherry picked from commit bc21765dce50d4d4a2064a1e531229b86c99d974) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Bridge ports are already brought up in the preceding batch. A second non-batch link-up can fail while the bond master is momentarily down and adds no useful state transition, so remove it. Update the kept-down gateway regression to assert kernel state directly and remove obsolete failure-output fixtures. Signed-off-by: Abhishek Agarwal <abhishag@nvidia.com> (cherry picked from commit 804d8acde3ec12faa001930dab1b5dfc830ae883) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Deleting a primary IPv4 address may implicitly remove its secondary before ifupdown2 issues the explicit secondary delete. Accept only that ENOENT warning while continuing to reject any warning involving retained IPv6. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Accept only the known stale management-address ENOENT warning and require the IPv6 monitor to observe the IPv4 transition without depending on a specific explicit-delete event being flushed to its output. Final kernel assertions still verify removed IPv6 is absent and retained IPv6 never transiently disappears. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
vlan-bridge-binding controls an SVI using VLAN membership on its lower bridge. It is not meaningful for an ordinary VLAN whose lower interface is a physical, bond, or other non-bridge device. Reset the requested or default value to None unless at least one lower interface object is a bridge. Keep the Debian-facing default at off. (cherry picked from commit 74bfd4dc86f496732e96e4edbc4f7624dd6f1fbf) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The public address path already uses the shared boolean helpers instead of importing distutils.util.strtobool. Extend the common mapping with y/n, t/f, and true/false so the replacement accepts the same boolean aliases. (cherry picked from commit eaf897a4c74eca3efceec716e3ea72f211b62c35) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…batch operations encounter conflicts When changing address-virtual MAC addresses, a duplicate-IP batch error could abort before stale bridge FDB entries were removed. Continue only when the batch reports one or more RTNETLINK File exists errors and no other RTNETLINK failures. Unknown or mixed failures still propagate, while duplicate-address conflicts no longer skip FDB cleanup. (cherry picked from commit b81214c7eb8ea40949f0b8770a5bf9a91d73c588) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Add comprehensive IPv6 support for VXLAN local tunnel IP configuration, enabling VXLAN underlays to use either IPv4 or IPv6 addressing. Key changes: - accept IPv4 and IPv6 values for vxlan-local-tunnelip - support IFLA_VXLAN_LOCAL6 alongside IFLA_VXLAN_LOCAL - parse both address families using ipnetwork.IPNetwork - use the iproute2 -6 flag for IPv6 VXLAN configurations - pass the IP version through single-VXLAN and L3VXI helpers - reconcile and report both families in ifquery output A VXLAN interface supports one local address family at a time. A focused integration test covers IPv6 creation, query output, and idempotent reload. (cherry picked from commit 82d545ef72f4c8d65d464d0b43c4f584a365f106) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…ssing SIGTERM during shutdown Do not enable networking.service through shutdown.target. The service is already active from basic.target/network.target; Conflicts=shutdown.target and Before=shutdown.target stop it through the normal ExecStop path. Keeping shutdown.target in WantedBy can add a contradictory start job to the shutdown transaction and race normal termination. (cherry picked from commit 314ea1d17e4b4a5be138eb1180bea2aaa55cf8ff) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
During diff-mode bridge creation, the generic slave handler brought a new port up before the bridge module deliberately cycled it for protected enslavement. That produced an unnecessary UP-DOWN-UP sequence. For a configured bridge port with no running bridge master, defer link-up to the bridge module. Continue allowing recovery for already-enslaved bridge ports and preserve existing behavior for other slave types. A focused diff-mode integration test verifies the deferred link-up path and final admin-up state. The existing EVPN regression accepts only the known management-address cleanup warning. (cherry picked from commit f8d9a8266ee4faf837a46f97f9d75c3899e75b67) Signed-off-by: Lohith CS <lcs@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
…down Treat the lower VLAN raw device's running IFF_UP state as a gate before bringing a VLAN VRF slave up. This complements the existing configured link-down check and avoids ENETDOWN when the lower is intentionally down. Ordinary VRF slaves and VLANs with an admin-up lower retain existing behavior. A focused live test verifies the VLAN remains enslaved and down. (cherry picked from commit 7506df6923d1e82a00b60b2c91e4739dacb0da40) Signed-off-by: abhishag <abhishag@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The regression edits the active ENI by removing IPv4 and IPv6 addresses. Use ifreload --diff, the operation that reconciles configuration removals, instead of re-running ifup on an already-applied interface. This makes explicit IPv6 removal deterministic while retaining the monitor assertion that configured IPv6 never flaps. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
When a port is enslaved to a VLAN-aware bridge, the kernel auto-adds VLAN 1 with the PVID flag. The netlink cache can receive this update before bridge PVID processing. Single VXLAN devices have no configured PVID, so the check can delete VLAN 1 and its VNI tunnel mapping. Filter a running PVID through bridge-vlan-vni-map before scheduling its deletion. VLANs managed by the tunnel-map handler remain intact, while ordinary PVID deletion is unchanged. (cherry picked from commit fa0dd84f007d26aee76f0baf991b3b62fa10be5e) Signed-off-by: Sapir Elyovitch <selyovitch@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Recreate a collect-metadata VXLAN twenty times and verify its VLAN 1 to VNI mapping survives every reload. Confirm each logical device is removed before recreation and guarantee cleanup if an assertion fails. The regression fails without fa0dd84f. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
ifreload --diff schedules its down phase against saved interface objects and its up phase against the new configuration. PVRST_MODE caches the process-wide scan result, so a decision made during down can prevent up from scanning its own objects. A stale false value leaves mstpd in RSTP; a stale true value can prevent PVRST from being cleared. Reset the cache at each sched_ifaces boundary so every phase evaluates its own interface set. The regression exercises RSTP to PVRST and back across a non-empty down phase. (cherry picked from commit 28313c06435b626eb97627b3024f8fa0d3481903) Signed-off-by: Lohith CS <lcs@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The brief link display reports operational state, which can be DOWN when an interface is administratively up but has no carrier. Read the kernel JSON flags and check IFF_UP directly instead. (cherry picked from commit 3d5b2c549b0a1c64c3d9e5fbf9c7b3c5d16db4c8) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
The interface is administratively up, but the test still expects it to be down. Update the stale expectation to match ifupdown2 behavior. (cherry picked from commit bb59b9859760070ba3e44313cb5bf61e0627e90e) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Escape the sed word-boundary expressions so Python does not treat them as invalid string escapes. Restore diff mode after the multi-bridge scenario so its local harness setting cannot leak into later tests. (cherry picked from commit abe47a99e30034eb35d715955ca8c281fa564370) Signed-off-by: Nita MS <nkachhadiya@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Restore the caller's reload mode even when the multi-bridge scenario fails. Document and assert the physical port's final administrative state so both link-state fixtures are fully covered. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Promote the secondary IPv4 address without editing IPv6 configuration, then require both configured IPv6 addresses to remain continuously present. This keeps the regression focused on the purge bug and removes an unrelated, sequence-sensitive explicit-removal check. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Use the module's duplex default only when a non-switch interface has an effective fixed-speed request and no policy duplex. This avoids standalone duplex commands, leaves switch ports policy-driven, and preserves explicit policy precedence. Update the stale generated man-page value to match the existing module metadata. (cherry picked from commit 4fbd40ec9f2ffa74a5f59a2386554a3bcf9617bd) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Add a disabled-by-default policy path for switch ports. Autonegotiation can advertise either all supported modes or one configured speed, while forced mode continues to require a positive speed. Non-switch interfaces retain the legacy path. Reapply link mode whenever the module runs because raw ENI and running speed cannot identify the advertised mode. Preserve effective mode outside ENI diff comparison so forced-lane to autoneg transitions can be cleared safely, retried after failure, or rolled back if the final command fails. (cherry picked from commit d23a229eaa64e96cc38cfcbab2069319887e1d29) Signed-off-by: Julien Fortin <jfortin@nvidia.com> Co-authored-by: sbandlamudi <sbandlamudi@nvidia.com>
Compare every saved and current loopback clagd-vxlan-anycast-ip value before building the up queue. Added, changed, or removed values now trigger the existing CLAG-wide fanout, including complete loopback removal. Keep the public current-CLAG detection so changes to other global CLAG attributes continue to schedule every configured CLAG interface. (cherry picked from commit c829f6f0ea3dbe8b176b50184f04b0cec8983d32) Signed-off-by: Julien Fortin <jfortin@nvidia.com>
When a saved bond slave is missing or administratively down, diff recovery already schedules the slave. Also schedule its configured bond master so the bond module can restore kernel master ownership. Limit expansion to current BOND_SLAVE interfaces and uppers that are actual configured bond devices; ordinary diffs, bridge/VRF slaves, and stale uppers retain existing behavior. (cherry picked from commit 05d4f64e6ce9b9955513857ed4fe493d0a465246) Signed-off-by: Abhishek Agarwal <abhishag@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
When a queued bridge's configured MAC changes, also schedule its direct VLAN uppers. Inherited SVIs then receive the new bridge MAC, while explicit-MAC SVIs rerun to preserve their own MAC and associated FDB state. Compare normalized MAC values across every bridge stanza, preserve value order, aggregate split SVI dependency metadata, and exclude non-VLAN uppers. (cherry picked from commit f1446a13d6a5ce60b07f75bbff2aea982c3da07e) Signed-off-by: Lohith CS <lcs@nvidia.com> Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Prepare coherent Python and Debian 3.10.0-1 release metadata and summarize the VXLAN, ethtool, reload, address, parser, netlink, and service changes. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Validate rtnexthop and nested-attribute lengths, scan the complete nested list, and decode only family-correct RTA_GATEWAY payloads. Malformed or unsupported entries are skipped without fabricating a device nexthop. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Treat inet6 and DHCPv6 interface intent as IPv6 configuration even without a static address. Low explicit or inherited MTUs now mark the interface failed instead of logging and returning success. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Do not seed current global VXLAN state from saved reload objects. When an L3VXI drops its effective local endpoint, inspect the running link and recreate the device so collect-metadata state cannot retain the stale address. Use the requested or cached address family consistently during recreation. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Lowercase string inputs before alias lookup so uppercase distutils-compatible values cannot fall through to an opposing caller default. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Remove a legacy shutdown.target.wants symlink during upgrades when it resolves to the package-owned networking service. Leave unrelated or non-symlink paths untouched. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Require an explicit plain-port allowlist, preserve and restore ENI/drop-ins for the session, fail on function cleanup errors, and keep Python 3.7-compatible test syntax. Attempt ethtool hardware restoration even if ENI restoration fails. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Delete the session snapshot only after ENI restoration, reload, and exact file verification all succeed. Failed restorations keep the snapshot for recovery. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Reject duplicate, configured, linked, active, or enslaved physical ports before mutation. Preserve ENI around standalone bridge-move tests and allow key-based SSH authentication. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Reject connected or enslaved ports before use, while allowing disconnected ports regardless of initial admin state. Restore each reserved port to that initial state after ENI reconciliation. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Delete the per-session remote coverage directory during SSH fixture teardown, and fail the session if cleanup cannot be completed. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Register the two-bridge fixture set before checking host capability so an intentional skip cannot make valid files appear orphaned. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
Attempt every reserved-port admin-state restoration even when ENI copy or reload fails. Retain the snapshot and return failure unless ENI, ports, and exact verification all succeed. Signed-off-by: Julien Fortin <jfortin@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This prepares the 3.10.0 release, with a focus on IPv6 VXLAN support, safer reload behavior, and preserving existing network state during configuration changes.
Highlights
VXLAN
vxlan-ageing 0and propagate ageing settings to SVD and L3VXI devices.Address and DHCP handling
Reload and interface reconciliation
Ethtool
Parser, netlink, and service robustness
source-directoryinput and close parser files on errors.json.loads(..., encoding=...)usage.shutdown.targetenablement during package upgrades.Compatibility
ifupdown2.confdefaults are unchanged.Validation