From 92461d3a574f170829e2f76e49e36b77e7d9ea0a Mon Sep 17 00:00:00 2001
From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
Date: Wed, 22 Jan 2014 13:44:36 +0100
Subject: [PATCH] networkd: link_get is synchronous

---
 src/network/networkd-link.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index f1c2889..7c9537a 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -713,7 +713,7 @@ static int link_up(Link *link) {
                 return r;
         }
 
-        r = sd_rtnl_message_link_set_flags(req, IFF_UP);
+        r = sd_rtnl_message_link_set_flags(req, link->flags | IFF_UP);
         if (r < 0) {
                 log_error_link(link, "Could not set link flags: %s", strerror(-r));
                 return r;
@@ -838,6 +838,7 @@ static int link_get_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
 
 static int link_get(Link *link) {
         _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *req = NULL;
+        _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *res = NULL;
         int r;
 
         assert(link);
@@ -852,13 +853,17 @@ static int link_get(Link *link) {
                 return r;
         }
 
-        r = sd_rtnl_call_async(link->manager->rtnl, req, link_get_handler, link, 0, NULL);
+        r = sd_rtnl_call(link->manager->rtnl, req, 0, &res);
         if (r < 0) {
                 log_error_link(link,
-                               "Could not send rtnetlink message: %s", strerror(-r));
+                               "Could not send/receive rtnetlink message: %s", strerror(-r));
                 return r;
         }
 
+        r = link_get_handler(link->manager->rtnl, res, link);
+        if (r < 0)
+                return r;
+
         return 0;
 }
 
-- 
1.7.2.5

