3 _Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"")
6 #include "conf-parser.h"
7 #include "network-internal.h"
8 #include "networkd-conf.h"
9 #include "networkd-network.h"
10 #include "vlan-util.h"
12 struct ConfigPerfItem;
15 %define slot-name section_and_lvalue
16 %define hash-function-name network_network_gperf_hash
17 %define lookup-function-name network_network_gperf_lookup
23 Match.MACAddress, config_parse_hwaddrs, 0, offsetof(Network, match_mac)
24 Match.Path, config_parse_strv, 0, offsetof(Network, match_path)
25 Match.Driver, config_parse_strv, 0, offsetof(Network, match_driver)
26 Match.Type, config_parse_strv, 0, offsetof(Network, match_type)
27 Match.Name, config_parse_ifnames, 0, offsetof(Network, match_name)
28 Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(Network, conditions)
29 Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(Network, conditions)
30 Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(Network, conditions)
31 Match.KernelVersion, config_parse_net_condition, CONDITION_KERNEL_VERSION, offsetof(Network, conditions)
32 Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(Network, conditions)
33 Link.MACAddress, config_parse_hwaddr, 0, offsetof(Network, mac)
34 Link.MTUBytes, config_parse_mtu, AF_UNSPEC, offsetof(Network, mtu)
35 Link.ARP, config_parse_tristate, 0, offsetof(Network, arp)
36 Link.Multicast, config_parse_tristate, 0, offsetof(Network, multicast)
37 Link.AllMulticast, config_parse_tristate, 0, offsetof(Network, allmulticast)
38 Link.Unmanaged, config_parse_bool, 0, offsetof(Network, unmanaged)
39 Link.RequiredForOnline, config_parse_required_for_online, 0, 0
40 Network.Description, config_parse_string, 0, offsetof(Network, description)
41 Network.Bridge, config_parse_ifname, 0, offsetof(Network, bridge_name)
42 Network.Bond, config_parse_ifname, 0, offsetof(Network, bond_name)
43 Network.VLAN, config_parse_stacked_netdev, NETDEV_KIND_VLAN, offsetof(Network, stacked_netdev_names)
44 Network.MACVLAN, config_parse_stacked_netdev, NETDEV_KIND_MACVLAN, offsetof(Network, stacked_netdev_names)
45 Network.MACVTAP, config_parse_stacked_netdev, NETDEV_KIND_MACVTAP, offsetof(Network, stacked_netdev_names)
46 Network.IPVLAN, config_parse_stacked_netdev, NETDEV_KIND_IPVLAN, offsetof(Network, stacked_netdev_names)
47 Network.VXLAN, config_parse_stacked_netdev, NETDEV_KIND_VXLAN, offsetof(Network, stacked_netdev_names)
48 Network.L2TP, config_parse_stacked_netdev, NETDEV_KIND_L2TP, offsetof(Network, stacked_netdev_names)
49 Network.MACsec, config_parse_stacked_netdev, NETDEV_KIND_MACSEC, offsetof(Network, stacked_netdev_names)
50 Network.Tunnel, config_parse_stacked_netdev, _NETDEV_KIND_TUNNEL, offsetof(Network, stacked_netdev_names)
51 Network.VRF, config_parse_ifname, 0, offsetof(Network, vrf_name)
52 Network.DHCP, config_parse_dhcp, 0, offsetof(Network, dhcp)
53 Network.DHCPServer, config_parse_bool, 0, offsetof(Network, dhcp_server)
54 Network.LinkLocalAddressing, config_parse_link_local_address_family_boolean, 0, offsetof(Network, link_local)
55 Network.IPv4LLRoute, config_parse_bool, 0, offsetof(Network, ipv4ll_route)
56 Network.IPv6Token, config_parse_ipv6token, 0, offsetof(Network, ipv6_token)
57 Network.LLDP, config_parse_lldp_mode, 0, offsetof(Network, lldp_mode)
58 Network.EmitLLDP, config_parse_lldp_emit, 0, offsetof(Network, lldp_emit)
59 Network.Address, config_parse_address, 0, 0
60 Network.Gateway, config_parse_gateway, 0, 0
61 Network.Domains, config_parse_domains, 0, 0
62 Network.DNS, config_parse_dns, 0, 0
63 Network.DNSDefaultRoute, config_parse_tristate, 0, offsetof(Network, dns_default_route)
64 Network.LLMNR, config_parse_resolve_support, 0, offsetof(Network, llmnr)
65 Network.MulticastDNS, config_parse_resolve_support, 0, offsetof(Network, mdns)
66 Network.DNSOverTLS, config_parse_dns_over_tls_mode, 0, offsetof(Network, dns_over_tls_mode)
67 Network.DNSSEC, config_parse_dnssec_mode, 0, offsetof(Network, dnssec_mode)
68 Network.DNSSECNegativeTrustAnchors, config_parse_dnssec_negative_trust_anchors, 0, 0
69 Network.NTP, config_parse_ntp, 0, offsetof(Network, ntp)
70 Network.IPForward, config_parse_address_family_boolean_with_kernel, 0, offsetof(Network, ip_forward)
71 Network.IPMasquerade, config_parse_bool, 0, offsetof(Network, ip_masquerade)
72 Network.IPv6PrivacyExtensions, config_parse_ipv6_privacy_extensions, 0, offsetof(Network, ipv6_privacy_extensions)
73 Network.IPv6AcceptRA, config_parse_tristate, 0, offsetof(Network, ipv6_accept_ra)
74 Network.IPv6AcceptRouterAdvertisements, config_parse_tristate, 0, offsetof(Network, ipv6_accept_ra)
75 Network.IPv6DuplicateAddressDetection, config_parse_int, 0, offsetof(Network, ipv6_dad_transmits)
76 Network.IPv6HopLimit, config_parse_int, 0, offsetof(Network, ipv6_hop_limit)
77 Network.IPv6ProxyNDP, config_parse_tristate, 0, offsetof(Network, ipv6_proxy_ndp)
78 Network.IPv6MTUBytes, config_parse_mtu, AF_INET6, offsetof(Network, ipv6_mtu)
79 Network.ActiveSlave, config_parse_bool, 0, offsetof(Network, active_slave)
80 Network.PrimarySlave, config_parse_bool, 0, offsetof(Network, primary_slave)
81 Network.IPv4ProxyARP, config_parse_tristate, 0, offsetof(Network, proxy_arp)
82 Network.ProxyARP, config_parse_tristate, 0, offsetof(Network, proxy_arp)
83 Network.IPv6ProxyNDPAddress, config_parse_ipv6_proxy_ndp_address, 0, 0
84 Network.BindCarrier, config_parse_strv, 0, offsetof(Network, bind_carrier)
85 Network.ConfigureWithoutCarrier, config_parse_bool, 0, offsetof(Network, configure_without_carrier)
86 Network.IgnoreCarrierLoss, config_parse_bool, 0, offsetof(Network, ignore_carrier_loss)
87 Address.Address, config_parse_address, 0, 0
88 Address.Peer, config_parse_address, 0, 0
89 Address.Broadcast, config_parse_broadcast, 0, 0
90 Address.Label, config_parse_label, 0, 0
91 Address.PreferredLifetime, config_parse_lifetime, 0, 0
92 Address.HomeAddress, config_parse_address_flags, 0, 0
93 Address.DuplicateAddressDetection, config_parse_address_flags, 0, 0
94 Address.ManageTemporaryAddress, config_parse_address_flags, 0, 0
95 Address.PrefixRoute, config_parse_address_flags, 0, 0
96 Address.AutoJoin, config_parse_address_flags, 0, 0
97 Address.Scope, config_parse_address_scope, 0, 0
98 IPv6AddressLabel.Prefix, config_parse_address_label_prefix, 0, 0
99 IPv6AddressLabel.Label, config_parse_address_label, 0, 0
100 Neighbor.Address, config_parse_neighbor_address, 0, 0
101 Neighbor.MACAddress, config_parse_neighbor_hwaddr, 0, 0
102 RoutingPolicyRule.TypeOfService, config_parse_routing_policy_rule_tos, 0, 0
103 RoutingPolicyRule.Priority, config_parse_routing_policy_rule_priority, 0, 0
104 RoutingPolicyRule.Table, config_parse_routing_policy_rule_table, 0, 0
105 RoutingPolicyRule.FirewallMark, config_parse_routing_policy_rule_fwmark_mask, 0, 0
106 RoutingPolicyRule.From, config_parse_routing_policy_rule_prefix, 0, 0
107 RoutingPolicyRule.To, config_parse_routing_policy_rule_prefix, 0, 0
108 RoutingPolicyRule.IncomingInterface, config_parse_routing_policy_rule_device, 0, 0
109 RoutingPolicyRule.OutgoingInterface, config_parse_routing_policy_rule_device, 0, 0
110 RoutingPolicyRule.IPProtocol, config_parse_routing_policy_rule_ip_protocol, 0, 0
111 RoutingPolicyRule.SourcePort, config_parse_routing_policy_rule_port_range, 0, 0
112 RoutingPolicyRule.DestinationPort, config_parse_routing_policy_rule_port_range, 0, 0
113 RoutingPolicyRule.InvertRule, config_parse_routing_policy_rule_invert, 0, 0
114 Route.Gateway, config_parse_gateway, 0, 0
115 Route.Destination, config_parse_destination, 0, 0
116 Route.Source, config_parse_destination, 0, 0
117 Route.Metric, config_parse_route_priority, 0, 0
118 Route.Scope, config_parse_route_scope, 0, 0
119 Route.PreferredSource, config_parse_preferred_src, 0, 0
120 Route.Table, config_parse_route_table, 0, 0
121 Route.MTUBytes, config_parse_route_mtu, AF_UNSPEC, 0
122 Route.GatewayOnLink, config_parse_gateway_onlink, 0, 0
123 Route.GatewayOnlink, config_parse_gateway_onlink, 0, 0
124 Route.IPv6Preference, config_parse_ipv6_route_preference, 0, 0
125 Route.Protocol, config_parse_route_protocol, 0, 0
126 Route.Type, config_parse_route_type, 0, 0
127 Route.InitialCongestionWindow, config_parse_tcp_window, 0, 0
128 Route.InitialAdvertisedReceiveWindow, config_parse_tcp_window, 0, 0
129 Route.QuickAck, config_parse_quickack, 0, 0
130 DHCP.ClientIdentifier, config_parse_dhcp_client_identifier, 0, offsetof(Network, dhcp_client_identifier)
131 DHCP.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_use_dns)
132 DHCP.UseNTP, config_parse_bool, 0, offsetof(Network, dhcp_use_ntp)
133 DHCP.UseMTU, config_parse_bool, 0, offsetof(Network, dhcp_use_mtu)
134 DHCP.UseHostname, config_parse_bool, 0, offsetof(Network, dhcp_use_hostname)
135 DHCP.UseDomains, config_parse_dhcp_use_domains, 0, offsetof(Network, dhcp_use_domains)
136 DHCP.UseRoutes, config_parse_bool, 0, offsetof(Network, dhcp_use_routes)
137 DHCP.Anonymize, config_parse_bool, 0, offsetof(Network, dhcp_anonymize)
138 DHCP.SendHostname, config_parse_bool, 0, offsetof(Network, dhcp_send_hostname)
139 DHCP.Hostname, config_parse_hostname, 0, offsetof(Network, dhcp_hostname)
140 DHCP.RequestBroadcast, config_parse_bool, 0, offsetof(Network, dhcp_broadcast)
141 DHCP.CriticalConnection, config_parse_bool, 0, offsetof(Network, dhcp_critical)
142 DHCP.VendorClassIdentifier, config_parse_string, 0, offsetof(Network, dhcp_vendor_class_identifier)
143 DHCP.MaxAttempts, config_parse_dhcp_max_attempts, 0, 0
144 DHCP.UserClass, config_parse_dhcp_user_class, 0, offsetof(Network, dhcp_user_class)
145 DHCP.DUIDType, config_parse_duid_type, 0, offsetof(Network, duid)
146 DHCP.DUIDRawData, config_parse_duid_rawdata, 0, offsetof(Network, duid)
147 DHCP.RouteMetric, config_parse_unsigned, 0, offsetof(Network, dhcp_route_metric)
148 DHCP.RouteTable, config_parse_section_route_table, 0, 0
149 DHCP.UseTimezone, config_parse_bool, 0, offsetof(Network, dhcp_use_timezone)
150 DHCP.IAID, config_parse_iaid, 0, 0
151 DHCP.ListenPort, config_parse_uint16, 0, offsetof(Network, dhcp_client_port)
152 DHCP.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit)
153 DHCP.ForceDHCPv6PDOtherInformation, config_parse_bool, 0, offsetof(Network, dhcp6_force_pd_other_information)
154 IPv6AcceptRA.UseAutonomousPrefix, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_autonomous_prefix)
155 IPv6AcceptRA.UseOnLinkPrefix, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_onlink_prefix)
156 IPv6AcceptRA.UseDNS, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_dns)
157 IPv6AcceptRA.UseDomains, config_parse_dhcp_use_domains, 0, offsetof(Network, ipv6_accept_ra_use_domains)
158 IPv6AcceptRA.RouteTable, config_parse_section_route_table, 0, 0
159 DHCPServer.MaxLeaseTimeSec, config_parse_sec, 0, offsetof(Network, dhcp_server_max_lease_time_usec)
160 DHCPServer.DefaultLeaseTimeSec, config_parse_sec, 0, offsetof(Network, dhcp_server_default_lease_time_usec)
161 DHCPServer.EmitDNS, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_dns)
162 DHCPServer.DNS, config_parse_dhcp_server_dns, 0, 0
163 DHCPServer.EmitNTP, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_ntp)
164 DHCPServer.NTP, config_parse_dhcp_server_ntp, 0, 0
165 DHCPServer.EmitRouter, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_router)
166 DHCPServer.EmitTimezone, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_timezone)
167 DHCPServer.Timezone, config_parse_timezone, 0, offsetof(Network, dhcp_server_timezone)
168 DHCPServer.PoolOffset, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_offset)
169 DHCPServer.PoolSize, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_size)
170 Bridge.Cost, config_parse_uint32, 0, offsetof(Network, cost)
171 Bridge.UseBPDU, config_parse_tristate, 0, offsetof(Network, use_bpdu)
172 Bridge.HairPin, config_parse_tristate, 0, offsetof(Network, hairpin)
173 Bridge.FastLeave, config_parse_tristate, 0, offsetof(Network, fast_leave)
174 Bridge.AllowPortToBeRoot, config_parse_tristate, 0, offsetof(Network, allow_port_to_be_root)
175 Bridge.UnicastFlood, config_parse_tristate, 0, offsetof(Network, unicast_flood)
176 Bridge.MulticastFlood, config_parse_tristate, 0, offsetof(Network, multicast_flood)
177 Bridge.MulticastToUnicast, config_parse_tristate, 0, offsetof(Network, multicast_to_unicast)
178 Bridge.NeighborSuppression, config_parse_tristate, 0, offsetof(Network, neighbor_suppression)
179 Bridge.Learning, config_parse_tristate, 0, offsetof(Network, learning)
180 Bridge.Priority, config_parse_bridge_port_priority, 0, offsetof(Network, priority)
181 BridgeFDB.MACAddress, config_parse_fdb_hwaddr, 0, 0
182 BridgeFDB.VLANId, config_parse_fdb_vlan_id, 0, 0
183 BridgeFDB.Destination, config_parse_fdb_destination, 0, 0
184 BridgeFDB.VNI, config_parse_fdb_vxlan_vni, 0, 0
185 BridgeVLAN.PVID, config_parse_brvlan_pvid, 0, 0
186 BridgeVLAN.VLAN, config_parse_brvlan_vlan, 0, 0
187 BridgeVLAN.EgressUntagged, config_parse_brvlan_untagged, 0, 0
188 Network.IPv6PrefixDelegation, config_parse_router_prefix_delegation, 0, 0
189 IPv6PrefixDelegation.RouterLifetimeSec, config_parse_sec, 0, offsetof(Network, router_lifetime_usec)
190 IPv6PrefixDelegation.Managed, config_parse_bool, 0, offsetof(Network, router_managed)
191 IPv6PrefixDelegation.OtherInformation, config_parse_bool, 0, offsetof(Network, router_other_information)
192 IPv6PrefixDelegation.RouterPreference, config_parse_router_preference, 0, 0
193 IPv6PrefixDelegation.EmitDNS, config_parse_bool, 0, offsetof(Network, router_emit_dns)
194 IPv6PrefixDelegation.DNS, config_parse_radv_dns, 0, 0
195 IPv6PrefixDelegation.EmitDomains, config_parse_bool, 0, offsetof(Network, router_emit_domains)
196 IPv6PrefixDelegation.Domains, config_parse_radv_search_domains, 0, 0
197 IPv6PrefixDelegation.DNSLifetimeSec, config_parse_sec, 0, offsetof(Network, router_dns_lifetime_usec)
198 IPv6Prefix.Prefix, config_parse_prefix, 0, 0
199 IPv6Prefix.OnLink, config_parse_prefix_flags, 0, 0
200 IPv6Prefix.AddressAutoconfiguration, config_parse_prefix_flags, 0, 0
201 IPv6Prefix.ValidLifetimeSec, config_parse_prefix_lifetime, 0, 0
202 IPv6Prefix.PreferredLifetimeSec, config_parse_prefix_lifetime, 0, 0
203 CAN.BitRate, config_parse_si_size, 0, offsetof(Network, can_bitrate)
204 CAN.SamplePoint, config_parse_permille, 0, offsetof(Network, can_sample_point)
205 CAN.RestartSec, config_parse_sec, 0, offsetof(Network, can_restart_us)
206 CAN.TripleSampling, config_parse_tristate, 0, offsetof(Network, can_triple_sampling)
207 /* backwards compatibility: do not add new entries to this section */
208 Network.IPv4LL, config_parse_ipv4ll, 0, offsetof(Network, link_local)
209 DHCPv4.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_use_dns)
210 DHCPv4.UseMTU, config_parse_bool, 0, offsetof(Network, dhcp_use_mtu)
211 DHCPv4.UseHostname, config_parse_bool, 0, offsetof(Network, dhcp_use_hostname)
212 DHCP.UseDomainName, config_parse_dhcp_use_domains, 0, offsetof(Network, dhcp_use_domains)
213 DHCPv4.UseDomainName, config_parse_dhcp_use_domains, 0, offsetof(Network, dhcp_use_domains)
214 DHCPv4.CriticalConnection, config_parse_bool, 0, offsetof(Network, dhcp_critical)