summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/networkd-network.c8
-rw-r--r--src/network/networkd-route.c12
-rw-r--r--src/network/networkd-route.h2
3 files changed, 15 insertions, 7 deletions
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index b9b3ed24d2..db192cb475 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -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);
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
index ad837099c8..65ab7f46c1 100644
--- a/src/network/networkd-route.c
+++ b/src/network/networkd-route.c
@@ -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);
+}
diff --git a/src/network/networkd-route.h b/src/network/networkd-route.h
index 3cff8bba41..42eda8e762 100644
--- a/src/network/networkd-route.h
+++ b/src/network/networkd-route.h
@@ -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_;