%{
#include <stddef.h>
#include "conf-parser.h"
#include "networkd-conf.h"
#include "networkd-network.h"
#include "network-internal.h"
#include "vlan-util.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)
Link.ARP,                               config_parse_tristate,                          0,                             offsetof(Network, arp)
Link.Unmanaged,                         config_parse_bool,                              0,                             offsetof(Network, unmanaged)
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.VRF,                            config_parse_netdev,                            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_lldp_mode,                         0,                             offsetof(Network, lldp_mode)
Network.EmitLLDP,                       config_parse_lldp_emit,                         0,                             offsetof(Network, lldp_emit)
Network.Address,                        config_parse_address,                           0,                             0
Network.Gateway,                        config_parse_gateway,                           0,                             0
Network.Domains,                        config_parse_domains,                           0,                             0
Network.DNS,                            config_parse_dns,                               0,                             0
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,                             0
Network.NTP,                            config_parse_ntp,                               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.IPv6AcceptRA,                   config_parse_tristate,                          0,                             offsetof(Network, ipv6_accept_ra)
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.IPv6ProxyNDP,                   config_parse_tristate,                          0,                             offsetof(Network, ipv6_proxy_ndp)
Network.ActiveSlave,                    config_parse_bool,                              0,                             offsetof(Network, active_slave)
Network.PrimarySlave,                   config_parse_bool,                              0,                             offsetof(Network, primary_slave)
Network.IPv4ProxyARP,                   config_parse_tristate,                          0,                             offsetof(Network, proxy_arp)
Network.ProxyARP,                       config_parse_tristate,                          0,                             offsetof(Network, proxy_arp)
Network.IPv6ProxyNDPAddress,            config_parse_ipv6_proxy_ndp_address,            0,                             0
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
Address.PreferredLifetime,              config_parse_lifetime,                          0,                             0
Address.HomeAddress,                    config_parse_address_flags,                     0,                             0
Address.DuplicateAddressDetection,      config_parse_address_flags,                     0,                             0
Address.ManageTemporaryAddress,         config_parse_address_flags,                     0,                             0
Address.PrefixRoute,                    config_parse_address_flags,                     0,                             0
Address.AutoJoin,                       config_parse_address_flags,                     0,                             0
IPv6AddressLabel.Prefix,                config_parse_address_label_prefix,              0,                             0
IPv6AddressLabel.Label,                 config_parse_address_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
Route.Table,                            config_parse_route_table,                       0,                             0
Route.GatewayOnlink,                    config_parse_gateway_onlink,                    0,                             0
Route.IPv6Preference,                   config_parse_ipv6_route_preference,             0,                             0
Route.Protocol,                         config_parse_route_protocol,                    0,                             0
DHCP.ClientIdentifier,                  config_parse_dhcp_client_identifier,            0,                             offsetof(Network, dhcp_client_identifier)
DHCP.UseDNS,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_use_dns)
DHCP.UseNTP,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_use_ntp)
DHCP.UseMTU,                            config_parse_bool,                              0,                             offsetof(Network, dhcp_use_mtu)
DHCP.UseHostname,                       config_parse_bool,                              0,                             offsetof(Network, dhcp_use_hostname)
DHCP.UseDomains,                        config_parse_dhcp_use_domains,                  0,                             offsetof(Network, dhcp_use_domains)
DHCP.UseRoutes,                         config_parse_bool,                              0,                             offsetof(Network, dhcp_use_routes)
DHCP.SendHostname,                      config_parse_bool,                              0,                             offsetof(Network, dhcp_send_hostname)
DHCP.Hostname,                          config_parse_hostname,                          0,                             offsetof(Network, dhcp_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.DUIDType,                          config_parse_duid_type,                         0,                             offsetof(Network, duid.type)
DHCP.DUIDRawData,                       config_parse_duid_rawdata,                      0,                             offsetof(Network, duid)
DHCP.RouteMetric,                       config_parse_unsigned,                          0,                             offsetof(Network, dhcp_route_metric)
DHCP.RouteTable,                        config_parse_dhcp_route_table,                  0,                             offsetof(Network, dhcp_route_table)
DHCP.UseTimezone,                       config_parse_bool,                              0,                             offsetof(Network, dhcp_use_timezone)
DHCP.IAID,                              config_parse_iaid,                              0,                             offsetof(Network, iaid)
DHCP.ListenPort,                        config_parse_uint16,                            0,                             offsetof(Network, dhcp_client_port)
IPv6AcceptRA.UseDNS,                    config_parse_bool,                              0,                             offsetof(Network, ipv6_accept_ra_use_dns)
IPv6AcceptRA.UseDomains,                config_parse_dhcp_use_domains,                  0,                             offsetof(Network, ipv6_accept_ra_use_domains)
IPv6AcceptRA.RouteTable,                config_parse_dhcp_route_table,                  0,                             offsetof(Network, ipv6_accept_ra_route_table)
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.EmitRouter,                  config_parse_bool,                              0,                             offsetof(Network, dhcp_server_emit_router)
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_uint32,                            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)
Bridge.Priority,                        config_parse_bridge_port_priority,              0,                             offsetof(Network, priority)
BridgeFDB.MACAddress,                   config_parse_fdb_hwaddr,                        0,                             0
BridgeFDB.VLANId,                       config_parse_fdb_vlan_id,                       0,                             0
BridgeVLAN.PVID,                        config_parse_brvlan_pvid,                       0,                             0
BridgeVLAN.VLAN,                        config_parse_brvlan_vlan,                       0,                             0
BridgeVLAN.EgressUntagged,              config_parse_brvlan_untagged,                   0,                             0
Network.IPv6PrefixDelegation,           config_parse_bool,                              0,                             offsetof(Network, router_prefix_delegation)
IPv6PrefixDelegation.RouterLifetimeSec, config_parse_sec,                               0,                             offsetof(Network, router_lifetime_usec)
IPv6PrefixDelegation.Managed,           config_parse_bool,                              0,                             offsetof(Network, router_managed)
IPv6PrefixDelegation.OtherInformation,  config_parse_bool,                              0,                             offsetof(Network, router_other_information)
IPv6PrefixDelegation.RouterPreference,  config_parse_router_preference,                 0,                             0
IPv6Prefix.Prefix,                      config_parse_prefix,                            0,                             0
IPv6Prefix.OnLink,                      config_parse_prefix_flags,                      0,                             0
IPv6Prefix.AddressAutoconfiguration,    config_parse_prefix_flags,                      0,                             0
IPv6Prefix.ValidLifetimeSec,            config_parse_prefix_lifetime,                   0,                             0
IPv6Prefix.PreferredLifetimeSec,        config_parse_prefix_lifetime,                   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_use_dns)
DHCPv4.UseMTU,                          config_parse_bool,                              0,                             offsetof(Network, dhcp_use_mtu)
DHCPv4.UseHostname,                     config_parse_bool,                              0,                             offsetof(Network, dhcp_use_hostname)
DHCP.UseDomainName,                     config_parse_dhcp_use_domains,                  0,                             offsetof(Network, dhcp_use_domains)
DHCPv4.UseDomainName,                   config_parse_dhcp_use_domains,                  0,                             offsetof(Network, dhcp_use_domains)
DHCPv4.CriticalConnection,              config_parse_bool,                              0,                             offsetof(Network, dhcp_critical)
