2 This file is part of systemd.
4 Copyright 2013 Tom Gundersen <teg@jklm.no>
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20 #include "conf-parser.h"
21 #include "networkd-util.h"
22 #include "parse-util.h"
23 #include "string-table.h"
24 #include "string-util.h"
27 const char *address_family_boolean_to_string(AddressFamilyBoolean b
) {
28 if (b
== ADDRESS_FAMILY_YES
||
29 b
== ADDRESS_FAMILY_NO
)
30 return yes_no(b
== ADDRESS_FAMILY_YES
);
32 if (b
== ADDRESS_FAMILY_IPV4
)
34 if (b
== ADDRESS_FAMILY_IPV6
)
40 AddressFamilyBoolean
address_family_boolean_from_string(const char *s
) {
43 /* Make this a true superset of a boolean */
47 return ADDRESS_FAMILY_YES
;
49 return ADDRESS_FAMILY_NO
;
52 return ADDRESS_FAMILY_IPV4
;
54 return ADDRESS_FAMILY_IPV6
;
56 return _ADDRESS_FAMILY_BOOLEAN_INVALID
;
59 DEFINE_CONFIG_PARSE_ENUM(config_parse_address_family_boolean
, address_family_boolean
, AddressFamilyBoolean
, "Failed to parse option");
61 int config_parse_address_family_boolean_with_kernel(
66 unsigned section_line
,
73 AddressFamilyBoolean
*fwd
= data
, s
;
80 /* This function is mostly obsolete now. It simply redirects
81 * "kernel" to "no". In older networkd versions we used to
82 * distuingish IPForward=off from IPForward=kernel, where the
83 * former would explicitly turn off forwarding while the
84 * latter would simply not touch the setting. But that logic
85 * is gone, hence silently accept the old setting, but turn it
88 s
= address_family_boolean_from_string(rvalue
);
90 if (streq(rvalue
, "kernel"))
91 s
= ADDRESS_FAMILY_NO
;
93 log_syntax(unit
, LOG_ERR
, filename
, line
, 0, "Failed to parse IPForward= option, ignoring: %s", rvalue
);