From c0ec474675c7a0203628d803e86405a564e22657 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 29 Sep 2020 14:17:27 +0900 Subject: [PATCH] network: move link_request_set_routing_policy() --- src/network/networkd-link.c | 37 +--------------------- src/network/networkd-routing-policy-rule.c | 35 ++++++++++++++++++++ src/network/networkd-routing-policy-rule.h | 2 ++ 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 0cdd2b5121..685cbd34cf 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -925,41 +925,6 @@ static void link_enter_configured(Link *link) { link_dirty(link); } -static int link_request_set_routing_policy_rule(Link *link) { - RoutingPolicyRule *rule, *rrule = NULL; - int r; - - assert(link); - assert(link->network); - - link->routing_policy_rules_configured = false; - - LIST_FOREACH(rules, rule, link->network->rules) { - r = routing_policy_rule_get(link->manager, rule, &rrule); - if (r >= 0) { - if (r == 0) - (void) routing_policy_rule_make_local(link->manager, rrule); - continue; - } - - r = routing_policy_rule_configure(rule, link, NULL); - if (r < 0) - return log_link_warning_errno(link, r, "Could not set routing policy rules: %m"); - if (r > 0) - link->routing_policy_rule_messages++; - } - - routing_policy_rule_purge(link->manager, link); - if (link->routing_policy_rule_messages == 0) - link->routing_policy_rules_configured = true; - else { - log_link_debug(link, "Setting routing policy rules"); - link_set_state(link, LINK_STATE_CONFIGURING); - } - - return 0; -} - static int nexthop_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) { int r; @@ -1066,7 +1031,7 @@ int link_request_set_routes(Link *link) { * the addresses now, let's not configure the routes either. */ return 0; - r = link_request_set_routing_policy_rule(link); + r = link_set_routing_policy_rules(link); if (r < 0) return r; diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c index 3b95ea76b0..9f356c6c24 100644 --- a/src/network/networkd-routing-policy-rule.c +++ b/src/network/networkd-routing-policy-rule.c @@ -609,6 +609,41 @@ int routing_policy_rule_configure(RoutingPolicyRule *rule, Link *link, link_netl return 1; } +int link_set_routing_policy_rules(Link *link) { + RoutingPolicyRule *rule, *rrule = NULL; + int r; + + assert(link); + assert(link->network); + + link->routing_policy_rules_configured = false; + + LIST_FOREACH(rules, rule, link->network->rules) { + r = routing_policy_rule_get(link->manager, rule, &rrule); + if (r >= 0) { + if (r == 0) + (void) routing_policy_rule_make_local(link->manager, rrule); + continue; + } + + r = routing_policy_rule_configure(rule, link, NULL); + if (r < 0) + return log_link_warning_errno(link, r, "Could not set routing policy rules: %m"); + if (r > 0) + link->routing_policy_rule_messages++; + } + + routing_policy_rule_purge(link->manager, link); + if (link->routing_policy_rule_messages == 0) + link->routing_policy_rules_configured = true; + else { + log_link_debug(link, "Setting routing policy rules"); + link_set_state(link, LINK_STATE_CONFIGURING); + } + + return 0; +} + int routing_policy_rule_section_verify(RoutingPolicyRule *rule) { int r; diff --git a/src/network/networkd-routing-policy-rule.h b/src/network/networkd-routing-policy-rule.h index af954e8fb5..2168f87528 100644 --- a/src/network/networkd-routing-policy-rule.h +++ b/src/network/networkd-routing-policy-rule.h @@ -62,6 +62,8 @@ void routing_policy_rule_free(RoutingPolicyRule *rule); DEFINE_NETWORK_SECTION_FUNCTIONS(RoutingPolicyRule, routing_policy_rule_free); int routing_policy_rule_section_verify(RoutingPolicyRule *rule); +int link_set_routing_policy_rules(Link *link); + int routing_policy_rule_configure(RoutingPolicyRule *rule, Link *link, link_netlink_message_handler_t callback); int routing_policy_rule_remove(RoutingPolicyRule *rule, Link *link, link_netlink_message_handler_t callback);