diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-08-19 10:43:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-19 10:43:58 +0200 |
commit | b55a6f0812a7263e760b2a095df5823448a0ea07 (patch) | |
tree | 66f520b682ae2f7a0c9e0cb457938d285f04f650 /src | |
parent | cbf138ebeff55d76fd7df06a1e797b96f41cb48f (diff) | |
parent | a0d95bbc38e60b1ac0b6b57d7a0ac3246d1576be (diff) |
Merge pull request #3990 from AnchorCat/networkd-fixes
networkd: various fixes for route configuration
Diffstat (limited to 'src')
-rw-r--r-- | src/network/networkd-route.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index cedaf47cf8..b197a5da6b 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -41,7 +41,7 @@ int route_new(Route **ret) { route->family = AF_UNSPEC; route->scope = RT_SCOPE_UNIVERSE; route->protocol = RTPROT_UNSPEC; - route->table = RT_TABLE_DEFAULT; + route->table = RT_TABLE_MAIN; route->lifetime = USEC_INFINITY; *ret = route; @@ -322,7 +322,8 @@ int route_add( } else return r; - *ret = route; + if (ret) + *ret = route; return 0; } @@ -440,20 +441,14 @@ static int route_expire_callback(sd_netlink *rtnl, sd_netlink_message *m, void * assert(m); assert(link); assert(link->ifname); - assert(link->link_messages > 0); if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) return 1; - link->link_messages--; - r = sd_netlink_message_get_errno(m); if (r < 0 && r != -EEXIST) log_link_warning_errno(link, r, "could not remove route: %m"); - if (link->link_messages == 0) - log_link_debug(link, "route removed"); - return 1; } @@ -466,11 +461,8 @@ int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata) { r = route_remove(route, route->link, route_expire_callback); if (r < 0) log_warning_errno(r, "Could not remove route: %m"); - else { - /* route may not be exist in kernel. If we fail still remove it */ - route->link->link_messages++; + else route_free(route); - } return 1; } @@ -557,14 +549,12 @@ int route_configure( if (r < 0) return log_error_errno(r, "Could not set flags: %m"); - if (route->table != RT_TABLE_DEFAULT) { - + if (route->table != RT_TABLE_MAIN) { if (route->table < 256) { r = sd_rtnl_message_route_set_table(req, route->table); if (r < 0) return log_error_errno(r, "Could not set route table: %m"); } else { - r = sd_rtnl_message_route_set_table(req, RT_TABLE_UNSPEC); if (r < 0) return log_error_errno(r, "Could not set route table: %m"); |