]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce network_verify_nexthops()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 29 Sep 2020 15:58:01 +0000 (00:58 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 6 Oct 2020 17:44:42 +0000 (02:44 +0900)
src/network/networkd-network.c
src/network/networkd-nexthop.c
src/network/networkd-nexthop.h

index d04d523c323fc575cb842e1c29eba35d8023fc2f..de150745506c6f971685bec858b933f8e2bb22ad 100644 (file)
@@ -153,7 +153,6 @@ int network_verify(Network *network) {
         RoutePrefix *route_prefix, *route_prefix_next;
         Neighbor *neighbor, *neighbor_next;
         AddressLabel *label, *label_next;
-        NextHop *nexthop;
         Address *address, *address_next;
         Prefix *prefix, *prefix_next;
         Route *route, *route_next;
@@ -299,9 +298,7 @@ int network_verify(Network *network) {
                 if (route_section_verify(route, network) < 0)
                         route_free(route);
 
-        HASHMAP_FOREACH(nexthop, network->nexthops_by_section)
-                if (nexthop_section_verify(nexthop) < 0)
-                        nexthop_free(nexthop);
+        network_verify_nexthops(network);
 
         LIST_FOREACH_SAFE(static_fdb_entries, fdb, fdb_next, network->static_fdb_entries)
                 if (section_is_invalid(fdb->section))
index 61c33f490053d4706971d47cd448b4ee77a922ec..1f03cbfe07d684c532c780201928e4032b33c6a1 100644 (file)
@@ -439,7 +439,7 @@ int manager_rtnl_process_nexthop(sd_netlink *rtnl, sd_netlink_message *message,
         return 1;
 }
 
-int nexthop_section_verify(NextHop *nh) {
+static int nexthop_section_verify(NextHop *nh) {
         if (section_is_invalid(nh->section))
                 return -EINVAL;
 
@@ -449,6 +449,16 @@ int nexthop_section_verify(NextHop *nh) {
         return 0;
 }
 
+void network_verify_nexthops(Network *network) {
+        NextHop *nh;
+
+        assert(network);
+
+        HASHMAP_FOREACH(nh, network->nexthops_by_section)
+                if (nexthop_section_verify(nh) < 0)
+                        nexthop_free(nh);
+}
+
 int config_parse_nexthop_id(
                 const char *unit,
                 const char *filename,
index 8f4686d864d7239bcf126187bdda5039886dc36c..f286f0e61e4e0aed791977548831bdba09784a8f 100644 (file)
@@ -30,7 +30,8 @@ typedef struct NextHop {
 } NextHop;
 
 NextHop *nexthop_free(NextHop *nexthop);
-int nexthop_section_verify(NextHop *nexthop);
+
+void network_verify_nexthops(Network *network);
 
 int link_set_nexthop(Link *link);