%{
#include <stddef.h>
#include "conf-parser.h"
#include "networkd.h"
#include "network-internal.h"
%}
struct ConfigPerfItem;
%null_strings
%language=ANSI-C
%define slot-name section_and_lvalue
%define hash-function-name network_network_gperf_hash
%define lookup-function-name network_network_gperf_lookup
%readonly-tables
%omit-struct-type
%struct-type
%includes
%%
Match.MACAddress,                       config_parse_hwaddr,                            0,                             offsetof(Network, match_mac)
Match.Path,                             config_parse_strv,                              0,                             offsetof(Network, match_path)
Match.Driver,                           config_parse_strv,                              0,                             offsetof(Network, match_driver)
Match.Type,                             config_parse_strv,                              0,                             offsetof(Network, match_type)
Match.Name,                             config_parse_ifnames,                           0,                             offsetof(Network, match_name)
Match.Host,                             config_parse_net_condition,                     CONDITION_HOST,                offsetof(Network, match_host)
Match.Virtualization,                   config_parse_net_condition,                     CONDITION_VIRTUALIZATION,      offsetof(Network, match_virt)
Match.KernelCommandLine,                config_parse_net_condition,                     CONDITION_KERNEL_COMMAND_LINE, offsetof(Network, match_kernel)
Match.Architecture,                     config_parse_net_condition,                     CONDITION_ARCHITECTURE,        offsetof(Network, match_arch)
Link.MACAddress,                        config_parse_hwaddr,                            0,                             offsetof(Network, mac)
Link.MTUBytes,                          config_parse_iec_size,                          0,                             offsetof(Network, mtu)
Network.Description,                    config_parse_string,                            0,                             offsetof(Network, description)
Network.Bridge,                         config_parse_netdev,                            0,                             offsetof(Network, bridge)
Network.Bond,                           config_parse_netdev,                            0,                             offsetof(Network, bond)
Network.VLAN,                           config_parse_netdev,                            0,                             0
Network.MACVLAN,                        config_parse_netdev,                            0,                             0
Network.MACVTAP,                        config_parse_netdev,                            0,                             0
Network.IPVLAN,                         config_parse_netdev,                            0,                             0
Network.VXLAN,                          config_parse_netdev,                            0,                             0
Network.Tunnel,                         config_parse_tunnel,                            0,                             0
Network.DHCP,                           config_parse_dhcp,                              0,                             offsetof(Network, dhcp)
Network.DHCPServer,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_server)
Network.LinkLocalAddressing,            config_parse_address_family_boolean,            0,                             offsetof(Network, link_local)
Network.IPv4LLRoute,                    config_parse_bool,                              0,                             offsetof(Network, ipv4ll_route)
Network.IPv6Token,                      config_parse_ipv6token,                         0,                             offsetof(Network, ipv6_token)
Network.LLDP,                           config_parse_bool,                              0,                             offsetof(Network, lldp)
Network.Address,                        config_parse_address,                           0,                             0
Network.Gateway,                        config_parse_gateway,                           0,                             0
Network.Domains,                        config_parse_domains,                           0,                             offsetof(Network, domains)
Network.DNS,                            config_parse_strv,                              0,                             offsetof(Network, dns)
Network.LLMNR,                          config_parse_resolve_support,                   0,                             offsetof(Network, llmnr)
Network.MulticastDNS,                   config_parse_resolve_support,                   0,                             offsetof(Network, mdns)
Network.DNSSEC,                         config_parse_dnssec_mode,                       0,                             offsetof(Network, dnssec_mode)
Network.DNSSECNegativeTrustAnchors,     config_parse_dnssec_negative_trust_anchors,     0,                             offsetof(Network, dnssec_negative_trust_anchors)
Network.NTP,                            config_parse_strv,                              0,                             offsetof(Network, ntp)
Network.IPForward,                      config_parse_address_family_boolean_with_kernel,0,                             offsetof(Network, ip_forward)
Network.IPMasquerade,                   config_parse_bool,                              0,                             offsetof(Network, ip_masquerade)
Network.IPv6PrivacyExtensions,          config_parse_ipv6_privacy_extensions,           0,                             offsetof(Network, ipv6_privacy_extensions)
Network.IPv6AcceptRouterAdvertisements, config_parse_tristate,                          0,                             offsetof(Network, ipv6_accept_ra)
Network.IPv6DuplicateAddressDetection,  config_parse_int,                               0,                             offsetof(Network, ipv6_dad_transmits)
Network.IPv6HopLimit,                   config_parse_int,                               0,                             offsetof(Network, ipv6_hop_limit)
Network.BindCarrier,                    config_parse_strv,                              0,                             offsetof(Network, bind_carrier)
Address.Address,                        config_parse_address,                           0,                             0
Address.Peer,                           config_parse_address,                           0,                             0
Address.Broadcast,                      config_parse_broadcast,                         0,                             0
Address.Label,                          config_parse_label,                             0,                             0
Route.Gateway,                          config_parse_gateway,                           0,                             0
Route.Destination,                      config_parse_destination,                       0,                             0
Route.Source,                           config_parse_destination,                       0,                             0
Route.Metric,                           config_parse_route_priority,                    0,                             0
Route.Scope,                            config_parse_route_scope,                       0,                             0
Route.PreferredSource,                  config_parse_preferred_src,                     0,                             0
DHCP.ClientIdentifier,                  config_parse_dhcp_client_identifier,            0,                             offsetof(Network, dhcp_client_identifier)
DHCP.UseDNS,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_dns)
DHCP.UseNTP,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_ntp)
DHCP.UseMTU,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_mtu)
DHCP.UseHostname,                       config_parse_bool,                              0,                             offsetof(Network, dhcp_hostname)
DHCP.UseDomains,                        config_parse_bool,                              0,                             offsetof(Network, dhcp_domains)
DHCP.UseRoutes,                         config_parse_bool,                              0,                             offsetof(Network, dhcp_routes)
DHCP.SendHostname,                      config_parse_bool,                              0,                             offsetof(Network, dhcp_sendhost)
DHCP.Hostname,                          config_parse_hostname,                          0,                             offsetof(Network, hostname)
DHCP.RequestBroadcast,                  config_parse_bool,                              0,                             offsetof(Network, dhcp_broadcast)
DHCP.CriticalConnection,                config_parse_bool,                              0,                             offsetof(Network, dhcp_critical)
DHCP.VendorClassIdentifier,             config_parse_string,                            0,                             offsetof(Network, dhcp_vendor_class_identifier)
DHCP.RouteMetric,                       config_parse_unsigned,                          0,                             offsetof(Network, dhcp_route_metric)
DHCP.UseTimezone,                       config_parse_bool,                              0,                             offsetof(Network, dhcp_timezone)
DHCPServer.MaxLeaseTimeSec,             config_parse_sec,                               0,                             offsetof(Network, dhcp_server_max_lease_time_usec)
DHCPServer.DefaultLeaseTimeSec,         config_parse_sec,                               0,                             offsetof(Network, dhcp_server_default_lease_time_usec)
DHCPServer.EmitDNS,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_server_emit_dns)
DHCPServer.DNS,                         config_parse_dhcp_server_dns,                   0,                             0
DHCPServer.EmitNTP,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_server_emit_ntp)
DHCPServer.NTP,                         config_parse_dhcp_server_ntp,                   0,                             0
DHCPServer.EmitTimezone,                config_parse_bool,                              0,                             offsetof(Network, dhcp_server_emit_timezone)
DHCPServer.Timezone,                    config_parse_timezone,                          0,                             offsetof(Network, dhcp_server_timezone)
DHCPServer.PoolOffset,                  config_parse_uint32,                            0,                             offsetof(Network, dhcp_server_pool_offset)
DHCPServer.PoolSize,                    config_parse_uint32,                            0,                             offsetof(Network, dhcp_server_pool_size)
Bridge.Cost,                            config_parse_unsigned,                          0,                             offsetof(Network, cost)
Bridge.UseBPDU,                         config_parse_bool,                              0,                             offsetof(Network, use_bpdu)
Bridge.HairPin,                         config_parse_bool,                              0,                             offsetof(Network, hairpin)
Bridge.FastLeave,                       config_parse_bool,                              0,                             offsetof(Network, fast_leave)
Bridge.AllowPortToBeRoot,               config_parse_bool,                              0,                             offsetof(Network, allow_port_to_be_root)
Bridge.UnicastFlood,                    config_parse_bool,                              0,                             offsetof(Network, unicast_flood)
BridgeFDB.MACAddress,                   config_parse_fdb_hwaddr,                        0,                             0
BridgeFDB.VLANId,                       config_parse_fdb_vlan_id,                       0,                             0
/* backwards compatibility: do not add new entries to this section */
Network.IPv4LL,                         config_parse_ipv4ll,                            0,                             offsetof(Network, link_local)
DHCPv4.UseDNS,                          config_parse_bool,                              0,                             offsetof(Network, dhcp_dns)
DHCPv4.UseMTU,                          config_parse_bool,                              0,                             offsetof(Network, dhcp_mtu)
DHCPv4.UseHostname,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_hostname)
DHCP.UseDomainName,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_domains)
DHCPv4.UseDomainName,                   config_parse_bool,                              0,                             offsetof(Network, dhcp_domains)
DHCPv4.CriticalConnection,              config_parse_bool,                              0,                             offsetof(Network, dhcp_critical)
