X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-route.c;h=3eca3cc547310583bbf9d8ffcd69352ca648d4d9;hp=918a1d0191790bf5e6960116d4dc5a16ffdda20c;hb=71a6151083d842b2f5bf04e50239f0bf85d34d2e;hpb=f579559b3a14c1f1ef96c372e7626c4733e6ef7d diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 918a1d019..3eca3cc54 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -54,12 +54,14 @@ void route_free(Route *route) { free(route); } -int route_configure(Manager *manager, Route *route, Link *link) { +int route_configure(Route *route, Link *link, + sd_rtnl_message_handler_t callback) { _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *req = NULL; int r; - assert(manager); assert(link); + assert(link->manager); + assert(link->manager->rtnl); assert(link->ifindex > 0); assert(route->family == AF_INET || route->family == AF_INET6); @@ -83,13 +85,13 @@ int route_configure(Manager *manager, Route *route, Link *link) { return r; } - r = sd_rtnl_send_with_reply_and_block(manager->rtnl, req, 0, NULL); + r = sd_rtnl_call_async(link->manager->rtnl, req, callback, link, 0, NULL); if (r < 0) { - log_error("Could not configure route: %s", strerror(-r)); + log_error("Could not send rtnetlink message: %s", strerror(-r)); return r; } - log_info("Configured route"); + link->rtnl_messages ++; return 0; } @@ -98,6 +100,7 @@ int config_parse_gateway(const char *unit, const char *filename, unsigned line, const char *section, + unsigned section_line, const char *lvalue, int ltype, const char *rvalue,