From 209af9a67a485ef647651fef7e22cfc04647c671 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 2 Oct 2020 17:48:59 +0900 Subject: [PATCH] network: introduce network_verify_traffic_control() --- src/network/networkd-network.c | 7 +------ src/network/tc/tc.c | 13 ++++++++++++- src/network/tc/tc.h | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 3c6f45c61b..e93e524c3f 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) { - TrafficControl *tc; SRIOV *sr_iov; assert(network); @@ -300,11 +299,7 @@ int network_verify(Network *network) { network_verify_prefixes(network); network_verify_route_prefixes(network); network_verify_routing_policy_rules(network); - - bool has_root = false, has_clsact = false; - ORDERED_HASHMAP_FOREACH(tc, network->tc_by_section) - if (traffic_control_section_verify(tc, &has_root, &has_clsact) < 0) - traffic_control_free(tc); + network_verify_traffic_control(network); ORDERED_HASHMAP_FOREACH(sr_iov, network->sr_iov_by_section) if (sr_iov_section_verify(sr_iov) < 0) diff --git a/src/network/tc/tc.c b/src/network/tc/tc.c index 8554716d76..2bb9c8f07f 100644 --- a/src/network/tc/tc.c +++ b/src/network/tc/tc.c @@ -56,7 +56,7 @@ int link_configure_traffic_control(Link *link) { return 0; } -int traffic_control_section_verify(TrafficControl *tc, bool *qdisc_has_root, bool *qdisc_has_clsact) { +static int traffic_control_section_verify(TrafficControl *tc, bool *qdisc_has_root, bool *qdisc_has_clsact) { assert(tc); switch(tc->kind) { @@ -68,3 +68,14 @@ int traffic_control_section_verify(TrafficControl *tc, bool *qdisc_has_root, boo assert_not_reached("Invalid traffic control type"); } } + +void network_verify_traffic_control(Network *network) { + bool has_root = false, has_clsact = false; + TrafficControl *tc; + + assert(network); + + ORDERED_HASHMAP_FOREACH(tc, network->tc_by_section) + if (traffic_control_section_verify(tc, &has_root, &has_clsact) < 0) + traffic_control_free(tc); +} diff --git a/src/network/tc/tc.h b/src/network/tc/tc.h index c822359f6c..7e277f6323 100644 --- a/src/network/tc/tc.h +++ b/src/network/tc/tc.h @@ -29,4 +29,4 @@ typedef struct TrafficControl { void traffic_control_free(TrafficControl *tc); int link_configure_traffic_control(Link *link); -int traffic_control_section_verify(TrafficControl *tc, bool *qdisc_has_root, bool *qdisc_has_clsact); +void network_verify_traffic_control(Network *network);