1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00
Commit Graph

70 Commits

Author SHA1 Message Date
Julien Fortin
8b99615b83 addons: bridge: add multi bridge support when bridge_set_static_mac_from_port=yes
The policy bridge_set_static_mac_from_port was added to ifupdown2 back when we didn't
support a mix of traditional and vlan-aware bridges. The code wasn't revisited after
such config was allowed on the system.

how to repro:

- set bridge_set_static_mac_from_port=yes in module_globals of:
/var/lib/ifupdown2/policy.d/bridge.json

auto br1
iface br1
    bridge-vlan-aware no
    bridge-stp off
    bridge-ports swp1

auto bridge
iface bridge
    bridge-ports swp7
    bridge-vids 10
    bridge-vlan-aware yes

auto vlan10
iface vlan10
    address 192.168.0.20/32
    vlan-id 10
    vlan-raw-device bridge

br1 and bridge will share the same mac address (swp1's mac).

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 18:11:25 +02:00
Julien Fortin
31bddf7647 addons: bridge: bridge-vlan-vni-map: fix display error vnis=vlans instead of vlans=vnis
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 18:06:02 +02:00
Julien Fortin
d42c5f307e addons: bridge: ifquery-running support for bridge-vlan-vni-map
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 18:05:23 +02:00
Julien Fortin
b2751c6f57 addons: bridge-vlan-vni-map: support multiple vni mapping per entry
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 18:04:24 +02:00
Julien Fortin
f422ae7c6c addons: bridge: bridge-vlan-vni-map: fix: not enough arguments for format string
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 17:58:32 +02:00
Julien Fortin
f54468e32b addons: bridge: check if bridge mac is already inherited from a port
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 17:50:20 +02:00
Julien Fortin
ecb7cc1365 addons: bridge: bridge-arp-nd-suppress should show up on ifquery --with-default if policy is set
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 17:38:01 +02:00
Julien Fortin
4b16a99797 clag: bridge l3vni: move bridge vxlan l3vni code to parent class + refactoring
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 17:36:11 +02:00
Julien Fortin
68d0005516 bridge.py: remove extra empty line in header
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 17:05:56 +02:00
Julien Fortin
32ef3071ec addons: bridge: fix bridge arp vni vlan syntax-check
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:55:54 +02:00
Julien Fortin
3e5e36410e addons: bridge: v2: arp suppression enabled when no vlan is configured
the previous patch didn't cover implicit vlan, format bridge.VLANID

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:54:50 +02:00
Julien Fortin
645fcb73e2 addons: bridge: skip bridge arp vni vlan for single vxlan device
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:54:38 +02:00
Julien Fortin
a037ffc5f0 addons: bridge: detect and warn when arp suppression is enabled and there is no vlan configured
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:52:45 +02:00
Julien Fortin
6a1110e3ed addons: bridge: detect VXLAN mis-config VNI "bridge-learning=on" and print log message
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:52:00 +02:00
Julien Fortin
20649b09c6 addons: bridge: enable ipv6 on SVD brport
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:50:51 +02:00
Julien Fortin
59ab29fbd1 addons: vxlan: inherit clagd-vxlan-anycast-ip from lo for clag vxlans (introduces old_ifaceobjs to get_dependent_ifacenames)
When clagd anycast ip configuration changes on an existing setup, we have two issues:
- populate_dependency_info is run twice (in the ifreload case), first on the new
ifaceobjs, then on the old ifaceobjs. Thus hitting vxlan.get_dependent_ifacenames twice
where vxlan._clagd_vxlan_anycast_ip is set (the first time properly, then reset to it's
old value).
The fix: add a "old_ifaceobjs" flag to avoid resetting vxlan._clagd_vxlan_anycast_ip

- when clagd anycast ip changes, clagd also updates the vxlan's ip but there's a chance
that the ifupdown2 cache won't get the netlink notification in time before UP ops are
running on the vxlans, running on a stale cache is no bueno.
The fix: add additional checks to see if we should trust the cache of not.

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:29:40 +02:00
Julien Fortin
47877f263d addons: bridge: fix error: write() argument must be str, not int
make sure to convert the mtu received via policy file back to string
before using it in the bridge module.

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-05-18 17:19:25 +02:00
Julien Fortin
d38e9b1273 addons: bridge: bridge-access checks are not necessary for single vxlan devices
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-05-18 17:19:25 +02:00
Julien Fortin
f54c45deb9 addons: bridge: fix bridge-vlan-vni-map example in modinfo
Ticket: #2623398
Reviewed By: PR#94

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-05-18 17:19:25 +02:00
Julien Fortin
01f27c6789 addons: bridge: skip bridge-bridgeprio if mstpctl-treeprio is configured on the bridge
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-05-18 17:19:25 +02:00
Julien Fortin
5f4ab65948 lib: Addon: add new Bridge class with member "bridge_vlan_aware_list"
we need to keep track of how many vlan-aware bridge we have in the user
configuration without having to loop over all ifaceobjs again. So we
store their name as they go through get_dependent_ifacenames

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-05-18 17:19:25 +02:00
Alexander Petrovskiy
1b845b1bab addons: bridge: add support for "bridge_always_up_dummy_brport" policy
User may want to have persistent name of dummy port if
"bridge-always-up" option is enabled.
Now the name can be defined in "bridge_always_up_dummy_brport" policy
for bridge module.

Signed-off-by: Alexander Petrovskiy <alexpe@nvidia.com>
2020-11-20 03:46:59 +03:00
Julien Fortin
086351cb7e addons: bridge: remove bridge-mcmi range check
The kernel doesn't seem to enforce any specific range, ifupdown2
shouldn't either.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 13:57:13 +02:00
Julien Fortin
3218f49d81 use "except Exception:" instead of "except:"
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-06-24 01:12:24 +02:00
Julien Fortin
8a78cd07bc addons: bridge: fix NoneType is not iterable exception
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 02:55:30 +02:00
Julien Fortin
e537a6e6d6 add support for single vxlan device (bridge-vlan-vni-map)
new attribute:

"bridge-vlan-vni-map": {
    "help": "Single vxlan support",
    "example": "bridge-vlan-vni-map 1000-1001=1000-1001",
}

example of config:

auto bridge
iface bridge
      bridge-vlan-aware yes
      bridge-ports vxlan0 swp1
      bridge-stp on
      bridge-vids 1000-1001
      bridge-pvid 1

auto vxlan0
iface vxlan0
      vxlan-local-tunnelip 27.0.0.9
      bridge-learning off
      # vlan 1000-1001 maps to vni 1000-1001
      bridge-vlan-vni-map 1000-1001=1000-1001

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 02:18:39 +02:00
Julien Fortin
7840bd2c09 addons: bridge: add support for new bridge-always-up attribute
Enabling this attribute on a bridge will
enslave a dummy interface to the bridge

example:

auto bridge
iface bridge
      bridge-vlan-aware yes
      bridge-always-up yes
      bridge-ports vni42

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 02:05:52 +02:00
Julien Fortin
16de4e7988 Merge branch 'master' into python3
* master:
  addons: address: process MTU before addrgen and adddresses
  ifupdownmain: support for marking interfaces as mgmt interfaces
  addons: bridge: fix TypeError: sequence item 0: expected string, int found
  addons: bridge: set bridge MTU after bridge creation addons: bridge: get bridge MTU from address policy not bridge
  addons: mstpctl: check mstpctl-stp and bridge-stp and fix bridge cache update
  lib: nlcache: fix dry_run exception
  addons: address: add support for a separate default mtu policy for eth interfaces
  debian: changelog: new 2.0.2-1 entry
  addons: ethtool: add support for "ethtool_ignore_errors" policy
  LinkUtils: mac_str_to_int: fix string to int conversion
  addons: dhcp: if mgmt vrf context exec dhclient in default vrf
2020-03-26 03:02:53 +01:00
Julien Fortin
6d94c17b51 addons: bridge: fix TypeError: sequence item 0: expected string, int found
This is seen when running vids are different than
configured vids on a bridge port.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-03-26 00:52:22 +01:00
Julien Fortin
24084976f7 addons: bridge: set bridge MTU after bridge creation
addons: bridge: get bridge MTU from address policy not bridge

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-03-26 00:51:25 +01:00
Julien Fortin
24931ffa21 addons: mstpctl: check mstpctl-stp and bridge-stp and fix bridge cache update
When an stp is enabled on an existing bridge mstpctl attributes are not always
configured by ifreload. This is due to a timing issue (cache) and some issue in
the mstpctl addon.

- Cache: when changing an existing bridge (done via netlink) we wait for the
kernel ack but we don't update our current cache with the new bridge attributes
This is bad because it means that the bridge cache data are stale until we
receive the notification from the kernel.

- Mstp addon: mstpctl-stp was deprecated in favor of bridge-stp, but in some
place, the mstpctl.py code checks for mstpctl-stp but not for bridge-stp. This
commit fixes the area related to this issue but this should be revisited in
a later commit

Ticket: CM-28951
Reviewed By: Roopa
Testing Done: precommit, smoke, evpn-smoke

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-03-26 00:39:03 +01:00
Julien Fortin
8598c690e3 lib: nlcache: fix dry_run exception
Ticket: CM-28312
Testing Done: Test from the ticket

error: link_set_bridge_info_data_dry_run() takes exactly 3 arguments (4 given)
error: link_set_brport_with_info_slave_data_dry_run() got an unexpected keyword argument 'kind'

seems like when updating a method, it's associated dry-run method wasn't
updated accordingly. Maybe there is a way to programmatically check that
I will look into it.

warning: bridge: skipping port X invalid ether addr
warning: interface not recognized - please check interface configuration
Won't show on dry-run anymore

Log info for commands executed with utils.exec_command() weren't prefixed with
DRY-RUN.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-03-26 00:38:54 +01:00
Julien Fortin
ca45cd9e83 lib: nlcache: fix dry_run exception
error: link_set_bridge_info_data_dry_run() takes exactly 3 arguments (4 given)
error: link_set_brport_with_info_slave_data_dry_run() got an unexpected keyword argument 'kind'

seems like when updating a method, it's associated dry-run method wasn't
updated accordingly. Maybe there is a way to programmatically check that
I will look into it.

warning: bridge: skipping port X invalid ether addr
warning: interface not recognized - please check interface configuration
Won't show on dry-run anymore

Log info for commands executed with utils.exec_command() weren't prefixed with
DRY-RUN.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-02-24 15:01:40 +01:00
Julien Fortin
393524ab41 addons: bridge: set bridge MTU after bridge creation
addons: bridge: get bridge MTU from address policy not bridge

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-02-24 14:58:12 +01:00
Julien Fortin
bd441a519d python3: pypi support: except ImportError and ModuleNotFoundError
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 17:25:32 +01:00
Julien Fortin
9dfc8a4446 addons: bridge: use string.replace.split instead of regex.split()
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 17:19:51 +01:00
Julien Fortin
c817ba4d53 python3: bridge: use integer python3 division instead of float division
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 17:19:46 +01:00
Julien Fortin
c46af1c992 python3: logging: the 'warn' method is deprecated, use warning instead
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 17:19:05 +01:00
Julien Fortin
15b329c571 python3: addons: bridge: add traceback for debugging
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 17:00:23 +01:00
Julien Fortin
7f208e5670 python3: replace python2 map with loops
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 16:58:25 +01:00
Julien Fortin
3b01ed7618 python3: 2to3 changes
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 16:55:49 +01:00
Julien Fortin
35681c0608 python3: shebang update
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 16:40:10 +01:00
Julien Fortin
223ba5af1d ifupdown2 2.0.0-1
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-12-17 13:46:18 +01:00
Maximilian Wilhelm
f5c97c0d6b Add bridge-ports-condone-regex option (closes #117)
The bridge-ports-condone-regex option can be used to tell ifupdown2 to let
  some bridge member ports alone and do not remove them on ifreload runs.
  This might come in handy when running a KVM (or any other virtualization
  system) host with a bridged network setup.

  Before this option, ifupdown2 would either complain about not existing
  member ports when setting up the bridge (if all VM interfaces were to
  be specified in /etc/network/interfaces) or remove any VM interface
  from a bridge if it was not specified in /e/n/i.

Signed-off-by: Maximilian Wilhelm <max@rfc2324.org>
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Co-authored-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-07-09 19:22:52 +04:00
Julien Fortin
d1477c4b9f addons: when comparing mac addresses use integer representation
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-06-12 23:26:20 +08:00
Julien Fortin
255ffb1fc3 addons: bridge: set bridge mtu on device creation
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-06-06 19:18:29 +08:00
Julien Fortin
9b585f9e67 addons: bridge: down: when ifreload_down_changed=1: purge bridge and upper devices cache
On ifreload (down ops) we need to purge the cache entry of the bridge and its upper devices
to avoid stale values in our cache.

ifup this config, then remove bridge-vids 20, ifreload: since the bridge is removed because
of ifreload_down_changed=1, we need torecreate the vlan bridge.10 and it's configuration, the
cache is stale. We need to clear it to remove the ip 10.10.10.10/32.

auto bridge
iface bridge
      bridge-ports swp1 swp2
      bridge-vids 10 20
      bridge-vlan-aware yes

auto swp1
iface swp1
      link-speed 10000

auto swp2
iface swp2

auto bridge.10
iface bridge.10
      address 10.10.10.10/32

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-04-22 10:56:14 +08:00
Julien Fortin
1b9d23e8a0 addons: bridge: don't disable ipv6 on vlan-aware vxlan-bridge
ipv6 shouldn't be disabled on a bridge vlan aware

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-04-22 10:55:28 +08:00
Julien Fortin
3832dce663 addons: bridge: get default mcsnoop value when bridge_vxlan is not set
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-04-22 10:55:09 +08:00
Julien Fortin
9f8f3b0d65 addons: bridge: check kernel state for igmp snooping on vxlan brport
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2019-04-22 10:53:23 +08:00