summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/systemd.network.xml4
-rw-r--r--src/network/networkd-routing-policy-rule.c9
2 files changed, 5 insertions, 8 deletions
diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index 1484c073ef..229449c5ac 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -1009,7 +1009,9 @@
<varlistentry>
<term><varname>IPProtocol=</varname></term>
<listitem>
- <para>Specifies the IP protocol to match in forwarding information base (FIB) rules. Accepted values are <literal>tcp</literal>, <literal>udp</literal> and <literal>sctp</literal>.
+ <para>Specifies the IP protocol to match in forwarding information base (FIB) rules. Takes IP protocol name such as <literal>tcp</literal>,
+ <literal>udp</literal> or <literal>sctp</literal>, or IP protocol number such as <literal>6</literal> for <literal>tcp</literal> or
+ <literal>17</literal> for <literal>udp</literal>.
Defaults to unset.</para>
</listitem>
</varlistentry>
diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c
index 5d87b27677..649876529e 100644
--- a/src/network/networkd-routing-policy-rule.c
+++ b/src/network/networkd-routing-policy-rule.c
@@ -958,14 +958,9 @@ int config_parse_routing_policy_rule_ip_protocol(
if (r < 0)
return r;
- r = ip_protocol_from_name(rvalue);
+ r = parse_ip_protocol(rvalue);
if (r < 0) {
- log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse routing policy rule protocol, ignoring: %s", rvalue);
- return 0;
- }
-
- if (!IN_SET(r, IPPROTO_TCP, IPPROTO_UDP, IPPROTO_SCTP)) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid protocol '%s'. Protocol should be tcp/udp/sctp, ignoring", rvalue);
+ log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse IP protocol '%s' for routing policy rule, ignoring: %m", rvalue);
return 0;
}