summaryrefslogtreecommitdiff
path: root/src/network/networkd-tunnel.c
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-07-01 12:51:08 +0200
committerTom Gundersen <teg@jklm.no>2014-07-01 12:55:19 +0200
commitd5b3d845f013f7f332c76e83bb8e867de7d3caee (patch)
tree2934fc1184a6764edea4dedf2cbd20f4c0508206 /src/network/networkd-tunnel.c
parent1a941ac4b690cb3f4333e35f4a5036fe6fd50ff9 (diff)
networkd: tunnel - ensure that enslave callback is always invoked
The Link statemachine relies on this, as it would otherwise wait forever. Hook up the tunnels in the same way as the other NetDev's.
Diffstat (limited to 'src/network/networkd-tunnel.c')
-rw-r--r--src/network/networkd-tunnel.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/network/networkd-tunnel.c b/src/network/networkd-tunnel.c
index 88146fe628..cffa5644ca 100644
--- a/src/network/networkd-tunnel.c
+++ b/src/network/networkd-tunnel.c
@@ -468,21 +468,17 @@ static int netdev_fill_vti_rtnl_message(Link *link, sd_rtnl_message *m) {
return r;
}
-int netdev_create_tunnel(Link *link, sd_rtnl_message_handler_t callback) {
+int netdev_create_tunnel(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callback) {
_cleanup_rtnl_message_unref_ sd_rtnl_message *m = NULL;
- NetDev *netdev;
int r;
- assert(link);
- assert(link->network);
- assert(link->network->tunnel);
-
- netdev = link->network->tunnel;
-
assert(netdev);
assert(netdev->ifname);
assert(netdev->manager);
assert(netdev->manager->rtnl);
+ assert(link);
+ assert(link->network);
+ assert(link->network->tunnel == netdev);
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, 0);
if (r < 0) {
@@ -517,7 +513,7 @@ int netdev_create_tunnel(Link *link, sd_rtnl_message_handler_t callback) {
return -ENOTSUP;
}
- r = sd_rtnl_call_async(netdev->manager->rtnl, m, callback, netdev, 0, NULL);
+ r = sd_rtnl_call_async(netdev->manager->rtnl, m, callback, link, 0, NULL);
if (r < 0) {
log_error_netdev(netdev,
"Could not send rtnetlink message: %s", strerror(-r));