Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 3.9.0 #318

Open
wants to merge 132 commits into
base: master
Choose a base branch
from
Open

Version 3.9.0 #318

wants to merge 132 commits into from

Conversation

julienfortin
Copy link
Contributor

  • New: ifreload: new --diff cli argument: only reload delta between /e/n/i
  • New: Support for Per-VLAN Rapid Spanning Tree attributes:
    mstpctl-pvrst-mode (on/off): Enable/disable PVRST mode
    mstpctl-vlan-priority (range 4096-32768)
    mstpctl-vlan-hello (range 1-10)
    mstpctl-vlan-fdelay (range 4-30)
    mstpctl-vlan-maxage (range 6-40)
    mstpctl-port-vlan-path-cost (range 1-200000000)
    mstpctl-port-vlan-priority (range 0-240)
  • New: Get default mac address from policy file as 'address' iface_default
  • New: Enable per vlan snooping when config mcqv4src
  • New: Add vxlan hopping filter
  • New: Add support for setting mac addresses via iface_defaults policy
  • New: Reset mac address on switch port when 'hwaddress' is removed from eni
  • New: Policy "dhclient_no_wait_on_reload": dhclient won't wait (default off)
  • Fix: Bring DHCP config down if link-down yes is set
  • Fix: Various code cleanups (SonarQube)
  • Fix: Macvlan/VRR: set accept_dad=0 before link up
  • Fix: Flush DHCP lease on boot up
  • Fix: Disable persistent debug log for ifquery
  • Fix:
  • Fix: Vxlan clear last fdb entry when remoteip is removed from user config
  • Fix: Vxlan reset local and group ip when removed from user config
  • Fix: Re-applying link-speed to reset link-lanes to default when removed
  • Fix: Missing json import in networkinterfaces.py and vxlan.py
  • Fix: Nlmanager Invalid operation on null-like value range_flag
  • Deprecated: remove bridge-hashel default value

julienfortin and others added 30 commits October 30, 2024 21:38
Default MAC addresses can now be defined as iface_default policy

$ cat /var/lib/ifupdown2/policy.d/mac.json
{
  "address": {
    "iface_defaults": {
      "swp1": {"hwaddress": "7a:43:9e:c0:e0:42"}
    }
  }
}

The usecase being, how to revert to a base mac once the hwaddress
attribute is removed from ENI.

Signed-off-by: Julien Fortin <[email protected]>
In diff mode SVI won't be processed if their config hasn't changed.
We need to do a specific fdb check during bridge processing and purge
stale macs.

This commit includes an incremental fix by Scott Laffer:
Fix logic in bridge stale perm fdb handling not to delete VRR vlan entries

In the scenario where only a bridge interface is up'd (i.e. it's the only
thing in the run queue in a diff-based apply), permanent fdb entries for
VRR interfaces were being incorrectly marked as stale and deleted from the fdb.

This patch updates the logic to not only match the bridge's own MAC address
but any permanent entry on the bridge device itself.

Signed-off-by: Julien Fortin <[email protected]>
When a switch port is enslaved to a bond we don't manage its
mac address anymore - all port have the same mac.

Signed-off-by: Julien Fortin <[email protected]>
…plied when it is part of a bond

Changing bond member port mac addr should not get applied when it is part of a bond

Problem description: Changing the hwaddress of a bond slave is not updating the bond interface's hwaddress.

Fix description: Block changing the hwaddress of a bond slave

Testcases covered:

1. change the hwaddress of an existing bond slave through nvue
2. Edit the eni file to add the port in bridge, see the hwaddress set through ifquery and 'ip link show', remove the port from bridge and add it to bond interface and change the hwaddress. do 'ifreload -a' and ifquery displays the changed hwaddress but 'ip link show' displays the older hwaddress and so does the bond intf.

Signed-off-by: Julien Fortin <[email protected]>
…l in e/n/i stanza is rendered with values like "none"

Signed-off-by: Julien Fortin <[email protected]>
Previous commit 4cfd51f broke test_bridge7_macvlans which is using
mac address with single digit segments: 42:38:39:FF:0:1

The regex is also compiled and moved to init to only do it once.

Signed-off-by: Julien Fortin <[email protected]>
DAD must be disabled on macvlan/VRR interfaces as they share the
same MAC (and thus link-local IPv6 address).

The sysctl accept_dad must be set to 0 before setting the link UP
otherwise DAD might trigger before we reset the sysctl to 0.

Signed-off-by: Andy Roulin <[email protected]>
Signed-off-by: Julien Fortin <[email protected]>
if the interface is down we won't be able to get the speed
skip the speed check

Signed-off-by: Julien Fortin <[email protected]>
The bond slave speed check has been causing issues over the past few months
It is not critical to have it so I prefer to remove it for now.

Signed-off-by: Julien Fortin <[email protected]>
…sion ^_?([A-Z_][a-zA-Z0-9]*|[a-z_][a-z0-9_]*)$.

Signed-off-by: Julien Fortin <[email protected]>
IFLA_BR_MCAST_HASH_ELASTICITY:
Set multicast database hash elasticity, It is the maximum chain length in the
multicast hash table. This attribute is deprecated and the value is always 16.

Signed-off-by: Julien Fortin <[email protected]>
If the policy is enabled (true/false) dhclient wont wait (-nw)
(except in case of networking restart or reboot)

Signed-off-by: Julien Fortin <[email protected]>
…egular expression ^[_a-z][a-z0-9_]*$.

Signed-off-by: Julien Fortin <[email protected]>
Issue: 3364956

Signed-off-by: Julien Fortin <[email protected]>
Default route is missing after the dhcp interface is cycled through link-down yes/no
This requires a full dhcp down-up cycle as well.

Signed-off-by: Julien Fortin <[email protected]>
…h is already caught.

ImportError is the parent classs of ModuleNotFoundError

Signed-off-by: Julien Fortin <[email protected]>
julienfortin and others added 28 commits November 29, 2024 13:49
…ide this statement: if (default || configured)

Signed-off-by: Julien Fortin <[email protected]>
ethtool output changed, we need to be able to supports the old and new syntax.

original commit title:
Configuring some random port + apply causing flapping of other working ports

Signed-off-by: Julien Fortin <[email protected]>
Useful in warmboot context.

Signed-off-by: Julien Fortin <[email protected]>
tests/: pytest related files and tests, test are converted from the ifupdown2-qa repo
__main__: necessary path injection (can probably be removed or adjusted in the future)

test_l2.py for l2 tests
test_l3.py for l3 tests
test_coverage.py for code coverage and static analysis (flake8, mypy but disabled at the moment due to the huge amount of errors)

Usage:

$ export PYTEST_REMOTE_HOST=$DEV;
$ export PYTEST_REMOTE_USER=$USER;
$ export PYTEST_REMOTE_PASSWORD=$PW
$ pytest
=== short test summary info ===
FAILED tests/test_coverage.py::test_coverage - AssertionError: Coverage less than 75% - total coverage: 54.5492335671603 - details in ./tests/results/coverage_data.tar.gz
=== 1 failed, 24 passed, 2 skipped, 9 warnings in 333.02s (0:05:33) ===

We can lower the coverage threshold until we had more test or clean up the dead code in ifupdown2
Right now all test run with coverage enabled on, and it's not possible to disable it, that will come in a different MR.

Signed-off-by: Julien Fortin <[email protected]>
the -c option in bridge -c vlan show is not working like it used to be
-c used to be reserved for the compressed-vlan output but upstream changed it.

We are using the fully expended output of the command now

Signed-off-by: Julien Fortin <[email protected]>
New attributes:

- mstpctl-pvrst-mode on/off

Bridge attributes:
- mstpctl-vlan-priority (aliased to: bridge-stp-vlan-priority)
- mstpctl-vlan-hello (aliased to: bridge-stp-vlan-hello)
- mstpctl-vlan-fdelay (aliased to: bridge-stp-vlan-fdelay)
- mstpctl-vlan-maxage (aliased to: bridge-stp-vlan-maxage)

Bridge port attribute:

- mstpctl-port-vlan-path-cost
- mstpctl-port-vlan-priority

Format for both bridge and brport attributes: attribute-name vlan-range=VALUE

Signed-off-by: Julien Fortin <[email protected]>
…ession ^_?([A-Z_][a-zA-Z0-9]*|[a-z_][a-z0-9_]*)$

Signed-off-by: Julien Fortin <[email protected]>
PVRST is now supported along side clag

Signed-off-by: Julien Fortin <[email protected]>
Signed-off-by: Julien Fortin <[email protected]>
Signed-off-by: Julien Fortin <[email protected]>
@julienfortin
Copy link
Contributor Author

@aderumier @sohorx @svenauhagen @BarbarossaTM @wido @lachbaer @vincentbernat @virtualized-human @lawli3t @jkklemm @OlivierB @itzwam @tomvil @moepman

FYI, here is version 3.9.0 (about 100 commits, fixes and new features). I will keep it in the dev branch for a few weeks if you guys want to test it. The goal is to merge it to master in Jan 2025.

Version 3.10 will have some of the community PRs.

@aderumier
Copy link
Contributor

oh this is huge :)

I'll try to take time to test it next month. Perfect time for debian13 (and proxmox 9 ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants