network: move link_request_set_routing_policy()
This commit is contained in:
parent
ddd6dd9f23
commit
c0ec474675
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue