From: Yu Watanabe Date: Sat, 17 Aug 2024 11:24:07 +0000 (+0900) Subject: network/routing-policy-rule: manage all flags X-Git-Tag: v257-rc1~678^2~2 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=957d94c5bd6011c2f02bb903b970e3e561a20dc8;p=systemd%2F.git network/routing-policy-rule: manage all flags Currently, only FIB_RULE_INVERT flag can be configurable, but for simplicity and future extension, let's manage all flags. No functional change, just refactoring. --- diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index 299e029922..0a57e6aee0 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -316,7 +316,7 @@ static int routing_policy_rule_append_json(RoutingPolicyRule *rule, sd_json_vari SD_JSON_BUILD_PAIR_UNSIGNED("FirewallMask", rule->fwmask), JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("Table", rule->table), JSON_BUILD_PAIR_STRING_NON_EMPTY("TableString", table), - SD_JSON_BUILD_PAIR_BOOLEAN("Invert", rule->invert_rule), + SD_JSON_BUILD_PAIR_BOOLEAN("Invert", FLAGS_SET(rule->flags, FIB_RULE_INVERT)), SD_JSON_BUILD_PAIR_CONDITION(rule->suppress_prefixlen >= 0, "SuppressPrefixLength", SD_JSON_BUILD_UNSIGNED(rule->suppress_prefixlen)), SD_JSON_BUILD_PAIR_CONDITION(rule->suppress_ifgroup >= 0, diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c index 4e184607e6..dd6adb49c5 100644 --- a/src/network/networkd-routing-policy-rule.c +++ b/src/network/networkd-routing-policy-rule.c @@ -524,11 +524,9 @@ static int routing_policy_rule_set_netlink_message(const RoutingPolicyRule *rule return r; } - if (rule->invert_rule) { - r = sd_rtnl_message_routing_policy_rule_set_flags(m, FIB_RULE_INVERT); - if (r < 0) - return r; - } + r = sd_rtnl_message_routing_policy_rule_set_flags(m, rule->flags); + if (r < 0) + return r; if (rule->l3mdev) { r = sd_netlink_message_append_u8(m, FRA_L3MDEV, 1); @@ -929,13 +927,11 @@ int manager_rtnl_process_rule(sd_netlink *rtnl, sd_netlink_message *message, Man } } - unsigned flags; - r = sd_rtnl_message_routing_policy_rule_get_flags(message, &flags); + r = sd_rtnl_message_routing_policy_rule_get_flags(message, &tmp->flags); if (r < 0) { log_warning_errno(r, "rtnl: received rule message without valid flag, ignoring: %m"); return 0; } - tmp->invert_rule = flags & FIB_RULE_INVERT; r = sd_netlink_message_read_u32(message, FRA_FWMARK, &tmp->fwmark); if (r < 0 && r != -ENODATA) { @@ -1487,7 +1483,7 @@ int config_parse_routing_policy_rule_invert( return 0; } - n->invert_rule = r; + SET_FLAG(n->flags, FIB_RULE_INVERT, r); TAKE_PTR(n); return 0; diff --git a/src/network/networkd-routing-policy-rule.h b/src/network/networkd-routing-policy-rule.h index fbde298f05..3765549554 100644 --- a/src/network/networkd-routing-policy-rule.h +++ b/src/network/networkd-routing-policy-rule.h @@ -27,7 +27,7 @@ typedef struct RoutingPolicyRule { uint8_t from_prefixlen; uint8_t tos; uint8_t type; /* a.k.a action */ - bool invert_rule; /* used for flags */ + uint32_t flags; /* attributes */ union in_addr_union to; /* FRA_DST */