networkd: Restore logic for enslaving to a master bonding interface.
---
Bonding support seems to have been removed right after being added,
between 52433f6 (22 Jan) and 54abf46 (25 Jan).
http://cgit.freedesktop.org/systemd/systemd/log/src/network/networkd-link.c
With this patch, networkd successfully configures the links.
Currently, networkd will not dhcp on the bonding interface. Here is my
configuration:
# /etc/systemd/network/dhcp.network
[Match]
Name=bond0
[Network]
DHCP=true
# /etc/systemd/network/ethernet.network
[Match]
Name=enp5s0
[Network]
Bond=bond0
# /etc/systemd/network/virtual.netdev
[NetDev]
Name=bond0
Kind=bond
# /etc/systemd/network/wireless.network
[Match]
Name=wlp2s0
[Network]
Bond=bond0
… and the network after manually adding address/route to bond0:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp5s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master bond0 state UP group default qlen 1000
link/ether f0:bf:97:ec:3e:ba brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master
bond0 state UP group default qlen 1000
link/ether f0:bf:97:ec:3e:ba brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UP group default
link/ether f0:bf:97:ec:3e:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.1.201/24 scope global bond0
valid_lft forever preferred_lft forever
$ ip r
default via 192.168.1.1 dev bond0
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.201
--- networkd-link.c.orig 2014-03-04 19:15:23.565904831 -0500
+++ networkd-link.c 2014-03-04 19:15:08.532572770 -0500
@@ -925,6 +925,27 @@
link->enslaving ++;
}
+ if (link->network->bond) {
+ log_struct_link(LOG_DEBUG, link,
+ "MESSAGE=%s: enslaving by '%s'",
+ link->ifname, link->network->bond->name,
+ NETDEV(link->network->bond),
+ NULL);
+
+ r = netdev_enslave(link->network->bond, link, &enslave_handler);
+ if (r < 0) {
+ log_struct_link(LOG_WARNING, link,
+ "MESSAGE=%s: could not enslave by '%s': %s",
+ link->ifname, link->network->bond->name, strerror(-r),
+ NETDEV(link->network->bond),
+ NULL);
+ link_enter_failed(link);
+ return r;
+ }
+
+ link->enslaving ++;
+ }
+
HASHMAP_FOREACH(vlan, link->network->vlans, i) {
log_struct_link(LOG_DEBUG, link,
"MESSAGE=%s: enslaving by '%s'",
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel