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);
|
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) {
|
static int nexthop_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
@ -1066,7 +1031,7 @@ int link_request_set_routes(Link *link) {
|
||||||
* the addresses now, let's not configure the routes either. */
|
* the addresses now, let's not configure the routes either. */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
r = link_request_set_routing_policy_rule(link);
|
r = link_set_routing_policy_rules(link);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|
|
@ -609,6 +609,41 @@ int routing_policy_rule_configure(RoutingPolicyRule *rule, Link *link, link_netl
|
||||||
return 1;
|
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 routing_policy_rule_section_verify(RoutingPolicyRule *rule) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,8 @@ void routing_policy_rule_free(RoutingPolicyRule *rule);
|
||||||
DEFINE_NETWORK_SECTION_FUNCTIONS(RoutingPolicyRule, routing_policy_rule_free);
|
DEFINE_NETWORK_SECTION_FUNCTIONS(RoutingPolicyRule, routing_policy_rule_free);
|
||||||
int routing_policy_rule_section_verify(RoutingPolicyRule *rule);
|
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_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);
|
int routing_policy_rule_remove(RoutingPolicyRule *rule, Link *link, link_netlink_message_handler_t callback);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue