]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: make IPProtocol= also accept IP protocol number
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 29 Nov 2018 15:43:40 +0000 (16:43 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 2 Dec 2018 05:13:47 +0000 (06:13 +0100)
man/systemd.network.xml
src/network/networkd-routing-policy-rule.c

index 1484c073ef00f0d9b19d955f5c363ad5adb7c887..229449c5ac569c843c199737420dc0c3d7e9ce73 100644 (file)
         <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>
index 5d87b27677e991a5fbea10945ea6eea2c6bd293b..649876529ed4fbfd48809aed2937eec084d74705 100644 (file)
@@ -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;
         }