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

234 Commits

Author SHA1 Message Date
Alex Hermann
ac645a1a82 addons: usercmds: Set environment just like the original ifupdown
The original ifupdown sets all interface options as IF_<option> environment
variable. Duplicate that behavior for compatibility.
2021-04-20 18:42:40 +02:00
Julien Fortin
038136754c addons: bond: bond mac should always be inherited from it's first slave
check if the bond mac address is correctly inherited from it's
first slave. There's a case where that might not be happening:
$ ip link show swp1 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$ ip link show swp2 | grep ether
   link/ether 08:00:27:04:d8:02 brd ff:ff:ff:ff:ff:ff
$ ip link add dev bond0 type bond
$ ip link set dev swp1 master bond0
$ ip link set dev swp2 master bond0
$ ip link show bond0 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$ ip link add dev bond1 type bond
$ ip link set dev swp1 master bond1
$ ip link show swp1 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$ ip link show swp2 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$ ip link show bond0 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$ ip link show bond1 | grep ether
   link/ether 08:00:27:04:d8:01 brd ff:ff:ff:ff:ff:ff
$
ifupdown2 will automatically correct and fix this unexpected behavior

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 21:37:36 +01:00
Julien Fortin
315f4f03b3 addons: bond: keep link admin up after being removed from bond
with kernel 4.19, slaves that are removed from a bond will be
admin down, this patch makes sure that the links are admin up
if they are part of the "auto" class and link-down yes is not set

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 21:36:15 +01:00
Julien Fortin
d079ad3fe8 addons: bond: set proto-up on slaves if bond used to be a clag bond or es-bond
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 21:34:50 +01:00
Julien Fortin
d0d657ed15 addons: bond: add ifname length check in sysfs back up path
When creating a bond, we first use a netlink call, if that
call fails we try to create and setup the bond via sysfs.

If the bond name is longer than 15 chars the netlink call
will fail, we will then enter the sysfs path which creates
the bond by writing to /sys/class/net/bonding_masters. In
this case the bonding driver will simply truncate the bond
name to fit into the 15 chars limit.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 21:33:36 +01:00
Julien Fortin
28bf72d8cb addons: vlan: new attribute: vlan-bridge-binding
From Mike Manning:
In the case of vlan filtering on bridges, the bridge may also have the
corresponding vlan devices as upper devices. Currently the link state
of vlan devices is transferred from the lower device. So this is up if
the bridge is in admin up state and there is at least one bridge port
that is up, regardless of the vlan that the port is a member of.

The link state of the vlan device may need to track only the state of
the subset of ports that are also members of the corresponding vlan,
rather than that of all ports.

Add a flag to specify a vlan bridge binding mode, by which the link
state is no longer automatically transferred from the lower device,
but is instead determined by the bridge ports that are members of the
vlan.
----

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 21:30:40 +01:00
Julien Fortin
adb4386268 addons: dhcp: don't release dhcp lease after timeout
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 19:15:28 +01:00
Julien Fortin
a6353bfb74 addons: addressvirtual: sync macvlan forwarding state with lower-device
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 19:12:41 +01:00
Julien Fortin
909377598e addons: mtu: policy: accept integer value for mtu in policy file
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 19:11:01 +01:00
Julien Fortin
190cf3e6eb addons: address: enable ipv6 before adding new address
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2021-01-25 19:10:05 +01:00
Julien Fortin
6860da4441 Merge pull request #180 from CumulusNetworks/issue-179/forwarding-disabled-on-dhcp-bridge
addons: bridge: enable forwarding on dhcp bridges (fixes: #179)
2021-01-25 19:03:58 +01:00
Julien Fortin
0305c4125f Merge pull request #185 from moepman/cleanup-batman-adv
Cleanup batman adv
2020-11-23 16:06:18 +01: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
Markus Hauschild
7db69c5b3c addons: batman_adv: drop unnecessary exception clause
The exception could have never come from read_file_oneline, also value
was an undefined variable, so it would have thrown an exception while
handling an exception thus being useless anyway.

Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-19 09:15:15 +01:00
Markus Hauschild
344a97e31d addons: batman_adv: fix netlink call
as suggested by @julienfortin in PR comment

Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-19 09:13:06 +01:00
Julien Fortin
69825bb495 addons: bridge: enable forwarding on dhcp bridges (fixes: #179)
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-11-18 14:19:48 +01:00
Markus Hauschild
1dc2c4a7c2 addons: batman_adv: improve readability
Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-17 15:40:27 +01:00
Markus Hauschild
9436b6cb7a addons: batman_adv: fix unresolved reference
Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-17 15:40:27 +01:00
Markus Hauschild
1d9a8d4f6b addons: batman_adv: cleanup according to PEP8
Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-17 15:40:27 +01:00
Markus Hauschild
a8ea3ce57b addons: batman_adv: use universal_newlines
This prevents the error: a bytes-like object is required, not 'str'

Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-17 00:48:48 +01:00
Markus Hauschild
969257a4fb addons: vxlan: fix vxlan-svcnodeip help text
Signed-off-by: Markus Hauschild <markus@moepman.eu>
2020-11-16 18:59:47 +01:00
Julien Fortin
ca43693778 addons: vxlan: new attribute: vxlan-mcastgrp-map
"vxlan-mcastgrp-map": {
    "help": "vxlan multicast group for single-vxlan device",
    "validvals": ["<number-ipv4-list>"],
    "example": ["vxlan-mcastgrp-map 1000=239.1.1.100 1001=239.1.1.200"],
}

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:32:07 +02:00
Julien Fortin
792b9a0700 addons: vxlan: add vxlan-mcastgrp support for single-vxlan device
this patch adds support for the vxlan-mcastgrp attribute on single
vxlan device. Prior to this commit the vxlan-mcastgrp was only
applied to regular vxlans.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:20:41 +02:00
Julien Fortin
a7e5fb2597 addons: vxlan: fix AttributeError: 'NoneType' object has no attribute 'ip'
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:19:58 +02:00
Julien Fortin
caac1e90b0 addons: vxlan: single-vxlan: remove local ip cidr before executing iproute2 link add
When creating a single-vxlan device we were sending local tunnel ip address with ip
network prefix. This patch avoid the following error:

error: cmd '/bin/ip link add dev vxlan0 type vxlan external local 27.0.0.9/32 dstport 4789' failed: returned 1 (Error: any valid address is expected rather than "27.0.0.9/32".
)

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:17:08 +02:00
Julien Fortin
366da8b334 addons: vrf: removing link-down after slave is removed from a VRF
This was added back when ifupdown2 was using brctl to del bridges.
brctl doesn't allow deleting a bridge if the bridge is still admin up.
Now that we moved to netlink this is not needed anymore.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:06:31 +02:00
lcawley
f343240c18 addons: ethtool: add support for 200G and 400G link speeds
Signed-off-by: lcawley <lcawley@cumulusnetworks.com>
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 14:02:15 +02:00
Julien Fortin
1b51e5a6d6 addons: dhcp: skipping dhcp configuration if link-down yes
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 13:59:41 +02:00
Julien Fortin
5358dfceb8 addons: dhcp: don't raise an exception after dhcp retry-failure
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-08-06 13:57:32 +02: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
0c019b802d Merge branch 'master' into issue-43/support-for-vxlan-ipv6-attributes 2020-07-01 16:55:38 +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
efa80e3043 addons: dhcp: don't enable syslog for ifquery
Ticket: CM-29849
Reviewed By: Roopa

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-06-23 17:46:48 +02:00
Julien Fortin
f00d0dcd8c addons: dhcp: enable syslog at boot & fix syslog log-level
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-06-18 17:48:18 +02:00
Alexandre Derumier
8994bdd39a address: don't process_mtu for openvswitch interfaces
Openvswitch already manage mtu if ovs-mtu is defined.
(Ovs manage mtu in userland, and sync mtu for some interfaces in kernel).

If mtu is changed by address module, before the ovs userland mtu,
this give packets drop.
2020-06-05 08:07:04 +02:00
Alexandre Derumier
6cdb2b3d22 addons: openvswitch: allow multiple ovs-ports + glob/regex 2020-05-28 11:21:55 +02:00
Alexandre Derumier
5efdf225e1 addon: openvswitch : add ovs-ports-condone-regex option
Like for bridge, add a option to skip delete a regex list of interfaces.
(can be usefull for hypervisor, when vm interfaces are dynamically plugged)
2020-05-16 08:11:22 +02:00
Julien Fortin
100fab20b6 addons: link: use iproute2 to create custom devices (fixes #156)
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-15 17:49:56 +02:00
Julien Fortin
406583375e addons: vxlan: add support for ipv6 attributes svcnodeip6 and mcastgrp6
vxlan-svcnodeip6": {
    "help": "vxlan svc node ip",
    "validvals": ["<ipv6>"],
    "example": ["vxlan-svcnodeip6 2001:DB8:8086:6502::"]
}

"vxlan-mcastgrp6": {
    "help": "vxlan multicast group",
    "validvals": ["<ip6>"],
    "example": ["vxlan-mcastgrp ff02::15c"],
}

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-15 04:32:38 +02:00
Julien Fortin
5890ab714e addons: link: porting 'veth-peer-name' attribute to python3 branch
original commit ported to the python3 branch:

commit bffa619b11
Author: Maximilian Wilhelm <max@rfc2324.org>
Date:   Sat Jan 14 19:08:01 2017 +0100

    Add option 'veth-peer-name' to veth links and ensure proper configuration.

      The option »veth-peer-name« forces an veth peer link to be created with
      a specific interface name. As the interface name of the "local" part of
      the veth link pair already is defined by the name of the interface stanza
      this option is added to, now both sides are clearly named.

      As there is a bidirectional dependency of both link pairs - both cannot
      exist without the other - this presents a problem when setting up all
      interfaces. Depending on which interface is set up first there might be
      a problem when only on dependency is specified. Therefore adding the
      »veth-peer-name« option to both interface of the veth link pair ensures
      that regardless of which side is configured first the peer name will be
      set correctly. This intentionally creates a circular dependency which is
      handled accordingly.

      Fixing the config check for veth link-type while at it :)

    Signed-off-by: Maximilian Wilhelm <max@rfc2324.org>

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 04:08:04 +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
4b706d71e2 addons: bond: fix es-sys-mac example
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 02:00:33 +02:00
Julien Fortin
4d9f4e59f3 addons: dchp: add debug logs and retry mechanism for dhclient (controled by policy)
ifupdown2 now tries to monitor the dhclient call to see if an ip address was
successfully assigned on the requested device. The number of retry can be
customized using the "dhclient_retry_on_failure" policy variable (which defaults to 0)

This commit also add debugging capabilities by automatically enabling sysloging when
configuring dhcp at boot (with PERFMODE option).

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-14 01:53:22 +02:00
Julien Fortin
580a567b25 addressvirtual: fix argument of type 'IPv4Network' is not iterable
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-13 20:41:28 +02:00
Julien Fortin
c3a22da623 addons: addressvirtual: add link_kind check before deleting stale macvlan device
In the addressvirtual module we have some code that checks if stale macvlans should
be deleted (when the address-virtual or vrrp keywords are removed from the config).
To find those stale macvlans we basically do a glob search in /sys/class/net/ with
the macvlan prefix (ifname) defined by ifupdown2: '%s-v' % ifaceobj.name[0:13], which
for a device foo would create macvlans named foo-v0...foo-vN.

In this particular case we have a vxlan named: sha3szx4-vpn, which gets matched
and removed without actually checking if this device is a macvlan or not.

This commit adds a link_kind check to ensure that we are only removing macvlans.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-13 20:40:33 +02:00
Julien Fortin
9808982edf addons: bond: add support for es-sys-mac and es-bonds
ES bonds have the same "init state" requirements as CLAG bonds -
1. A bond needs to be designated as an "es-bond" for this purpose.
For clag-bonds we used "clag-id" attr (to designate a bond as a "clag-bond").
For ES bonds we will use "es-sys-mac" attr.

2. Slaves added to an "ES bond" must have protodown-on.
This is again similar to CLAG bonds

3. And vice-versa i.e. when a slave is removed from an "es-bond",
protodown-on must be cleared.

4. When es-sys-mac is first set on a bond, all the bond-slaves must be
placed in "protodown-on" state. This is needed whether FRR is running at that point or not.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-13 20:27:21 +02:00
Julien Fortin
85d04bab16 addons: mstpctl: ifquery: add VXLAN check before processing bpdu-mstpctl attributes
When --with-defaults is provided we update the stanza-data structure without
making sure we are dealing with a vxlan intf.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-13 20:24:49 +02:00
Julien Fortin
80f2b5535f addons: vrf-slave: keep vlan down if lower device has link-down yes
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
2020-05-13 20:24:35 +02:00