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

251 Commits

Author SHA1 Message Date
Julien Fortin
1db0cb7acc addons: address: remove stale fdb entry for svi (when hwaddress is used)
As seen in the example below we are seeing a corner case, first the user
/e/n/i is configured without 'hwaddress', then it is used to fix the svi
mac address. The current code only checks for the statemanager for old
'hwaddress' attribute but couldn't find any. Now we save the mac addr
before updating it, so we can later clear it from the fdb.

$ cat a
auto eth0
iface eth0 inet dhcp

auto bridge
iface bridge
        bridge-vlan-aware yes
        bridge-ports vx-1000
        bridge-stp on
        bridge-vids 1000 1002 1004 1006 1008
        bridge-pvid 1

auto vx-1000
iface vx-1000
        vxlan-id 1000
        bridge-access 1000
        vxlan-local-tunnelip 27.0.0.11
        bridge-learning off
        bridge-arp-nd-suppress on
        mstpctl-portbpdufilter yes
        mstpctl-bpduguard yes
        mtu 9152

auto vlan1000
iface vlan1000
        address 45.0.0.2/24
        vlan-id 1000
        vlan-raw-device bridge
        address-virtual 00:00:5e:00:01:01 45.0.0.1/24
        vrf vrf1

auto vrf1
iface vrf1
        vrf-table auto

$
$
$ cat b
auto eth0
iface eth0 inet dhcp

auto bridge
iface bridge
        bridge-vlan-aware yes
        bridge-ports vx-1000
        bridge-stp on
        bridge-vids 1000 1002 1004 1006 1008
        bridge-pvid 1

auto vx-1000
iface vx-1000
        vxlan-id 1000
        bridge-access 1000
        vxlan-local-tunnelip 27.0.0.11
        bridge-learning off
        bridge-arp-nd-suppress on
        mstpctl-portbpdufilter yes
        mstpctl-bpduguard yes
        mtu 9152

auto vlan1000
iface vlan1000
        address 45.0.0.2/24
        hwaddress 00:02:00:aa:aa:aa
        vlan-id 1000
        vlan-raw-device bridge
        address-virtual 00:00:5e:00:01:01 45.0.0.1/24
        vrf vrf1

auto vrf1
iface vrf1
        vrf-table auto

$
$
$ rm /etc/network/interfaces ; ln -s `pwd`/a /etc/network/interfaces ; ifreload -a ; rm /etc/network/interfaces ; ln -s `pwd`/b /etc/network/interfaces ; (ifreload -av |& grep vlan | grep 1000)
info: bridge: netlink: bridge vlan add vid 1000 dev bridge
info: vlan1000: netlink: ip link set dev vlan1000 down
info: vlan1000: netlink: ip link set dev vlan1000 address 00:02:00:aa:aa:aa
info: vlan1000: netlink: ip link set dev vlan1000 up
info: writing '1' to file /proc/sys/net/ipv4/conf/vlan1000/arp_accept
info: executing /sbin/bridge fdb del 4a:b3:1e:45:bf:bf dev bridge vlan 1000  self
info: executing /sbin/bridge fdb replace 00:02:00:aa:aa:aa dev bridge vlan 1000  self
info: executing /sbin/bridge fdb replace 00:00:5e:00:01:01 dev bridge vlan 1000  self
$

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:13:49 +02:00
Julien Fortin
20eab2b13e addons: address: new policy: check_l3_svi_ip_forwarding
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:12:11 +02:00
Julien Fortin
0b34071bf8 addons: address: warn user if L3-SVI is configured with "ip-forward off"
Context:
"user accidentally disabled ip4 and ip6 forwarding on the L3-SVI for all VRF's.
we should add a check in ifupdown2 to warn user this is a bad config (symmetric
routing will not work if routing is disabled in this way)."

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 16:10:28 +02:00
Julien Fortin
9c1176c849 addons: vlan: check vlan-id misconfiguration and print warning
patch adds the following warning when it detects a vlan-id misconfiguration
error: vlan13: cannot change vlan-id to 13: operation not supported. Please delete the device with 'ifdown vlan13' and recreate it to apply the change.

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 15:52:37 +02:00
Julien Fortin
75a9503027 addons: addressvirtual: check macvlan interface name lenght and war if len > 15
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 15:38:39 +02:00
Julien Fortin
01a655366b addons: address: raise exception when detecting an invalid ip address
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-06-30 15:37:12 +02:00
Danny Abukalam
d34d1513ca addons: bond: correct bond-slaves regex example
Signed-off-by: Danny Abukalam <danny@softiron.com>
2021-06-15 21:00:56 -04:00
Sam Osterkil
b20f983630 Support value-in-range with <number> keyword
This allows syntax checking to pass for fields like vxlan-ttl/vxlan-tos
which can be a number in a range OR a string value representing a special
meaning (0-255 or "auto", for instance).  Without this, you can only pass
a --syntax-check for such fields if your value is one of those literally
specified because, for instance, "64" is not "auto", "0", or "255":

invalid value "64": valid attribute values: ['0', '255']
info: exit status 1

Note that _applying_ such configuration still works, because netlink's
acceptance criteria are independent of ifupdown2's.
2021-06-01 14:11:59 -06:00
Julien Fortin
a8dd54b0fa addons: vxlan: vxlan-tos, vxlan-udp-csum refactoring and fixes
fix vxlan-tos inherit = 1 (was set to 0)
and other fixes to make sure we don't unnecessarily set
those attributes on vxlan creation

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
2021-05-21 00:04:14 +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
d0e5676882 addons: vrf: removing extra \n from log messages
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
3eb08b79e0 add support for new address policy: 'ip_blacklist'
context:
The IP address 169.254.0.1 is used by BGP unnumbered as an onlink
next-hop for IPv4 prefixes. When this is configured on the box, it
causes major issues which are very difficult to diagnose a debug.
It would be great if ifupdown2 could block this from being installed
on any interface as an address or address-virtual.

Signed-off-by: Julien Fortin <jfortin@nvidia.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
Sam Osterkil
e521508b41 addons: vxlan: support ToS and udpcsum 2021-04-29 20:16:46 -06:00
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