network: introduce network_verify_traffic_control()

This commit is contained in:
Yu Watanabe 2020-10-02 17:48:59 +09:00
parent 200543791a
commit 209af9a67a
3 changed files with 14 additions and 8 deletions

View File

@ -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)

View File

@ -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);
}

View File

@ -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);