network: introduce network_verify_routes()

This commit is contained in:
Yu Watanabe 2020-10-02 10:08:39 +09:00
parent 565194127a
commit d9940a3f8a
3 changed files with 15 additions and 7 deletions

View File

@ -156,7 +156,6 @@ static int network_resolve_stacked_netdevs(Network *network) {
int network_verify(Network *network) {
Address *address, *address_next;
Route *route, *route_next;
TrafficControl *tc;
SRIOV *sr_iov;
@ -219,6 +218,8 @@ int network_verify(Network *network) {
address_free(address);
}
if (network->n_static_routes > 0) {
Route *route;
log_warning("%s: Cannot set routes when Bond= is specified, ignoring routes.",
network->filename);
while ((route = network->static_routes))
@ -298,10 +299,7 @@ int network_verify(Network *network) {
if (address_section_verify(address) < 0)
address_free(address);
LIST_FOREACH_SAFE(routes, route, route_next, network->static_routes)
if (route_section_verify(route, network) < 0)
route_free(route);
network_verify_routes(network);
network_verify_nexthops(network);
network_verify_fdb_entries(network);
network_verify_mdb_entries(network);

View File

@ -2162,7 +2162,7 @@ int config_parse_multipath_route(
return 0;
}
int route_section_verify(Route *route, Network *network) {
static int route_section_verify(Route *route, Network *network) {
if (section_is_invalid(route->section))
return -EINVAL;
@ -2202,3 +2202,13 @@ int route_section_verify(Route *route, Network *network) {
return 0;
}
void network_verify_routes(Network *network) {
Route *route, *route_next;
assert(network);
LIST_FOREACH_SAFE(routes, route, route_next, network->static_routes)
if (route_section_verify(route, network) < 0)
route_free(route);
}

View File

@ -85,12 +85,12 @@ int route_add_foreign(Link *link, Route *in, Route **ret);
bool route_equal(Route *r1, Route *r2);
int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata);
int route_section_verify(Route *route, Network *network);
DEFINE_NETWORK_SECTION_FUNCTIONS(Route, route_free);
int network_add_ipv4ll_route(Network *network);
int network_add_default_route_on_device(Network *network);
void network_verify_routes(Network *network);
const char* route_type_to_string(int t) _const_;
int route_type_from_string(const char *s) _pure_;