%{
#if __GNUC__ >= 7
_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"")
#endif
#include <stddef.h>
#include "bond.h"
#include "bridge.h"
#include "conf-parser.h"
#include "geneve.h"
#include "ipvlan.h"
#include "macsec.h"
#include "macvlan.h"
#include "tunnel.h"
#include "tuntap.h"
#include "veth.h"
#include "vlan-util.h"
#include "vlan.h"
#include "vxlan.h"
#include "vrf.h"
#include "netdev.h"
#include "network-internal.h"
#include "vxcan.h"
#include "wireguard.h"
#include "fou-tunnel.h"
#include "l2tp-tunnel.h"
#include "xfrm.h"
%}
struct ConfigPerfItem;
%null_strings
%language=ANSI-C
%define slot-name section_and_lvalue
%define hash-function-name network_netdev_gperf_hash
%define lookup-function-name network_netdev_gperf_lookup
%readonly-tables
%omit-struct-type
%struct-type
%includes
%%
Match.Host,                               config_parse_net_condition,                CONDITION_HOST,                offsetof(NetDev, conditions)
Match.Virtualization,                     config_parse_net_condition,                CONDITION_VIRTUALIZATION,      offsetof(NetDev, conditions)
Match.KernelCommandLine,                  config_parse_net_condition,                CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, conditions)
Match.KernelVersion,                      config_parse_net_condition,                CONDITION_KERNEL_VERSION,      offsetof(NetDev, conditions)
Match.Architecture,                       config_parse_net_condition,                CONDITION_ARCHITECTURE,        offsetof(NetDev, conditions)
NetDev.Description,                       config_parse_string,                       0,                             offsetof(NetDev, description)
NetDev.Name,                              config_parse_ifname,                       0,                             offsetof(NetDev, ifname)
NetDev.Kind,                              config_parse_netdev_kind,                  0,                             offsetof(NetDev, kind)
NetDev.MTUBytes,                          config_parse_mtu,                          AF_UNSPEC,                     offsetof(NetDev, mtu)
NetDev.MACAddress,                        config_parse_hwaddr,                       0,                             offsetof(NetDev, mac)
VLAN.Id,                                  config_parse_vlanid,                       0,                             offsetof(VLan, id)
VLAN.GVRP,                                config_parse_tristate,                     0,                             offsetof(VLan, gvrp)
VLAN.MVRP,                                config_parse_tristate,                     0,                             offsetof(VLan, mvrp)
VLAN.LooseBinding,                        config_parse_tristate,                     0,                             offsetof(VLan, loose_binding)
VLAN.ReorderHeader,                       config_parse_tristate,                     0,                             offsetof(VLan, reorder_hdr)
MACVLAN.Mode,                             config_parse_macvlan_mode,                 0,                             offsetof(MacVlan, mode)
MACVTAP.Mode,                             config_parse_macvlan_mode,                 0,                             offsetof(MacVlan, mode)
IPVLAN.Mode,                              config_parse_ipvlan_mode,                  0,                             offsetof(IPVlan, mode)
IPVLAN.Flags,                             config_parse_ipvlan_flags,                 0,                             offsetof(IPVlan, flags)
IPVTAP.Mode,                              config_parse_ipvlan_mode,                  0,                             offsetof(IPVlan, mode)
IPVTAP.Flags,                             config_parse_ipvlan_flags,                 0,                             offsetof(IPVlan, flags)
Tunnel.Local,                             config_parse_tunnel_address,               0,                             offsetof(Tunnel, local)
Tunnel.Remote,                            config_parse_tunnel_address,               0,                             offsetof(Tunnel, remote)
Tunnel.TOS,                               config_parse_unsigned,                     0,                             offsetof(Tunnel, tos)
Tunnel.TTL,                               config_parse_unsigned,                     0,                             offsetof(Tunnel, ttl)
Tunnel.Key,                               config_parse_tunnel_key,                   0,                             offsetof(Tunnel, key)
Tunnel.InputKey,                          config_parse_tunnel_key,                   0,                             offsetof(Tunnel, ikey)
Tunnel.OutputKey,                         config_parse_tunnel_key,                   0,                             offsetof(Tunnel, okey)
Tunnel.DiscoverPathMTU,                   config_parse_bool,                         0,                             offsetof(Tunnel, pmtudisc)
Tunnel.Mode,                              config_parse_ip6tnl_mode,                  0,                             offsetof(Tunnel, ip6tnl_mode)
Tunnel.IPv6FlowLabel,                     config_parse_ipv6_flowlabel,               0,                             offsetof(Tunnel, ipv6_flowlabel)
Tunnel.CopyDSCP,                          config_parse_bool,                         0,                             offsetof(Tunnel, copy_dscp)
Tunnel.EncapsulationLimit,                config_parse_encap_limit,                  0,                             offsetof(Tunnel, encap_limit)
Tunnel.Independent,                       config_parse_bool,                         0,                             offsetof(Tunnel, independent)
Tunnel.AssignToLoopback,                  config_parse_bool,                         0,                             offsetof(Tunnel, assign_to_loopback)
Tunnel.AllowLocalRemote,                  config_parse_tristate,                     0,                             offsetof(Tunnel, allow_localremote)
Tunnel.FooOverUDP,                        config_parse_bool,                         0,                             offsetof(Tunnel, fou_tunnel)
Tunnel.FOUDestinationPort,                config_parse_ip_port,                      0,                             offsetof(Tunnel, fou_destination_port)
Tunnel.FOUSourcePort,                     config_parse_ip_port,                      0,                             offsetof(Tunnel, encap_src_port)
Tunnel.Encapsulation,                     config_parse_fou_encap_type,               0,                             offsetof(Tunnel, fou_encap_type)
Tunnel.IPv6RapidDeploymentPrefix,         config_parse_6rd_prefix,                   0,                             0
Tunnel.ERSPANIndex,                       config_parse_uint32,                       0,                             offsetof(Tunnel, erspan_index)
Tunnel.SerializeTunneledPackets,          config_parse_tristate,                     0,                             offsetof(Tunnel, gre_erspan_sequence)
Tunnel.ISATAP,                            config_parse_tristate,                     0,                             offsetof(Tunnel, isatap)
FooOverUDP.Protocol,                      config_parse_ip_protocol,                  0,                             offsetof(FouTunnel, fou_protocol)
FooOverUDP.Encapsulation,                 config_parse_fou_encap_type,               0,                             offsetof(FouTunnel, fou_encap_type)
FooOverUDP.Port,                          config_parse_ip_port,                      0,                             offsetof(FouTunnel, port)
FooOverUDP.PeerPort,                      config_parse_ip_port,                      0,                             offsetof(FouTunnel, peer_port)
FooOverUDP.Local,                         config_parse_fou_tunnel_address,           0,                             offsetof(FouTunnel, local)
FooOverUDP.Peer,                          config_parse_fou_tunnel_address,           0,                             offsetof(FouTunnel, peer)
L2TP.TunnelId,                            config_parse_l2tp_tunnel_id,               0,                             offsetof(L2tpTunnel, tunnel_id)
L2TP.PeerTunnelId,                        config_parse_l2tp_tunnel_id,               0,                             offsetof(L2tpTunnel, peer_tunnel_id)
L2TP.UDPSourcePort,                       config_parse_ip_port,                      0,                             offsetof(L2tpTunnel, l2tp_udp_sport)
L2TP.UDPDestinationPort,                  config_parse_ip_port,                      0,                             offsetof(L2tpTunnel, l2tp_udp_dport)
L2TP.Local,                               config_parse_l2tp_tunnel_address,          0,                             offsetof(L2tpTunnel, local)
L2TP.Remote,                              config_parse_l2tp_tunnel_address,          0,                             offsetof(L2tpTunnel, remote)
L2TP.EncapsulationType,                   config_parse_l2tp_encap_type,              0,                             offsetof(L2tpTunnel, l2tp_encap_type)
L2TP.UDPCheckSum,                         config_parse_bool,                         0,                             offsetof(L2tpTunnel, udp_csum)
L2TP.UDP6CheckSumRx,                      config_parse_bool,                         0,                             offsetof(L2tpTunnel, udp6_csum_rx)
L2TP.UDP6CheckSumTx,                      config_parse_bool,                         0,                             offsetof(L2tpTunnel, udp6_csum_tx)
L2TPSession.SessionId,                    config_parse_l2tp_session_id,              0,                             0
L2TPSession.PeerSessionId,                config_parse_l2tp_session_id,              0,                             0
L2TPSession.Layer2SpecificHeader,         config_parse_l2tp_session_l2spec,          0,                             0
L2TPSession.Name,                         config_parse_l2tp_session_name,            0,                             0
Peer.Name,                                config_parse_ifname,                       0,                             offsetof(Veth, ifname_peer)
Peer.MACAddress,                          config_parse_hwaddr,                       0,                             offsetof(Veth, mac_peer)
VXCAN.Peer,                               config_parse_ifname,                       0,                             offsetof(VxCan, ifname_peer)
VXLAN.VNI,                                config_parse_uint32,                       0,                             offsetof(VxLan, vni)
VXLAN.Id,                                 config_parse_uint32,                       0,                             offsetof(VxLan, vni) /* deprecated */
VXLAN.Group,                              config_parse_vxlan_address,                0,                             offsetof(VxLan, group)
VXLAN.Local,                              config_parse_vxlan_address,                0,                             offsetof(VxLan, local)
VXLAN.Remote,                             config_parse_vxlan_address,                0,                             offsetof(VxLan, remote)
VXLAN.TOS,                                config_parse_unsigned,                     0,                             offsetof(VxLan, tos)
VXLAN.TTL,                                config_parse_vxlan_ttl,                    0,                             offsetof(VxLan, ttl)
VXLAN.MacLearning,                        config_parse_bool,                         0,                             offsetof(VxLan, learning)
VXLAN.ARPProxy,                           config_parse_bool,                         0,                             offsetof(VxLan, arp_proxy)
VXLAN.ReduceARPProxy,                     config_parse_bool,                         0,                             offsetof(VxLan, arp_proxy)
VXLAN.L2MissNotification,                 config_parse_bool,                         0,                             offsetof(VxLan, l2miss)
VXLAN.L3MissNotification,                 config_parse_bool,                         0,                             offsetof(VxLan, l3miss)
VXLAN.RouteShortCircuit,                  config_parse_bool,                         0,                             offsetof(VxLan, route_short_circuit)
VXLAN.UDPCheckSum,                        config_parse_bool,                         0,                             offsetof(VxLan, udpcsum)
VXLAN.UDPChecksum,                        config_parse_bool,                         0,                             offsetof(VxLan, udpcsum)
VXLAN.UDP6ZeroCheckSumRx,                 config_parse_bool,                         0,                             offsetof(VxLan, udp6zerocsumrx)
VXLAN.UDP6ZeroChecksumRx,                 config_parse_bool,                         0,                             offsetof(VxLan, udp6zerocsumrx)
VXLAN.UDP6ZeroCheckSumTx,                 config_parse_bool,                         0,                             offsetof(VxLan, udp6zerocsumtx)
VXLAN.UDP6ZeroChecksumTx,                 config_parse_bool,                         0,                             offsetof(VxLan, udp6zerocsumtx)
VXLAN.RemoteChecksumTx,                   config_parse_bool,                         0,                             offsetof(VxLan, remote_csum_tx)
VXLAN.RemoteChecksumRx,                   config_parse_bool,                         0,                             offsetof(VxLan, remote_csum_rx)
VXLAN.FDBAgeingSec,                       config_parse_sec,                          0,                             offsetof(VxLan, fdb_ageing)
VXLAN.GroupPolicyExtension,               config_parse_bool,                         0,                             offsetof(VxLan, group_policy)
VXLAN.GenericProtocolExtension,           config_parse_bool,                         0,                             offsetof(VxLan, generic_protocol_extension)
VXLAN.MaximumFDBEntries,                  config_parse_unsigned,                     0,                             offsetof(VxLan, max_fdb)
VXLAN.PortRange,                          config_parse_port_range,                   0,                             0
VXLAN.DestinationPort,                    config_parse_ip_port,                      0,                             offsetof(VxLan, dest_port)
VXLAN.FlowLabel,                          config_parse_flow_label,                   0,                             0
VXLAN.IPDoNotFragment,                    config_parse_df,                           0,                             offsetof(VxLan, df)
GENEVE.Id,                                config_parse_geneve_vni,                   0,                             offsetof(Geneve, id)
GENEVE.Remote,                            config_parse_geneve_address,               0,                             offsetof(Geneve, remote)
GENEVE.TOS,                               config_parse_uint8,                        0,                             offsetof(Geneve, tos)
GENEVE.TTL,                               config_parse_geneve_ttl,                   0,                             offsetof(Geneve, ttl)
GENEVE.UDPChecksum,                       config_parse_bool,                         0,                             offsetof(Geneve, udpcsum)
GENEVE.UDP6ZeroCheckSumRx,                config_parse_bool,                         0,                             offsetof(Geneve, udp6zerocsumrx)
GENEVE.UDP6ZeroChecksumRx,                config_parse_bool,                         0,                             offsetof(Geneve, udp6zerocsumrx)
GENEVE.UDP6ZeroCheckSumTx,                config_parse_bool,                         0,                             offsetof(Geneve, udp6zerocsumtx)
GENEVE.UDP6ZeroChecksumTx,                config_parse_bool,                         0,                             offsetof(Geneve, udp6zerocsumtx)
GENEVE.DestinationPort,                   config_parse_ip_port,                      0,                             offsetof(Geneve, dest_port)
GENEVE.IPDoNotFragment,                   config_parse_geneve_df,                    0,                             offsetof(Geneve, geneve_df)
GENEVE.FlowLabel,                         config_parse_geneve_flow_label,            0,                             0
MACsec.Port,                              config_parse_macsec_port,                  0,                             0
MACsec.Encrypt,                           config_parse_tristate,                     0,                             offsetof(MACsec, encrypt)
MACsecReceiveChannel.Port,                config_parse_macsec_port,                  0,                             0
MACsecReceiveChannel.MACAddress,          config_parse_macsec_hw_address,            0,                             0
MACsecTransmitAssociation.PacketNumber,   config_parse_macsec_packet_number,         0,                             0
MACsecTransmitAssociation.KeyId,          config_parse_macsec_key_id,                0,                             0
MACsecTransmitAssociation.Key,            config_parse_macsec_key,                   0,                             0
MACsecTransmitAssociation.KeyFile,        config_parse_macsec_key_file,              0,                             0
MACsecTransmitAssociation.Activate,       config_parse_macsec_sa_activate,           0,                             0
MACsecTransmitAssociation.UseForEncoding, config_parse_macsec_use_for_encoding,      0,                             0
MACsecReceiveAssociation.Port,            config_parse_macsec_port,                  0,                             0
MACsecReceiveAssociation.MACAddress,      config_parse_macsec_hw_address,            0,                             0
MACsecReceiveAssociation.PacketNumber,    config_parse_macsec_packet_number,         0,                             0
MACsecReceiveAssociation.KeyId,           config_parse_macsec_key_id,                0,                             0
MACsecReceiveAssociation.Key,             config_parse_macsec_key,                   0,                             0
MACsecReceiveAssociation.KeyFile,         config_parse_macsec_key_file,              0,                             0
MACsecReceiveAssociation.Activate,        config_parse_macsec_sa_activate,           0,                             0
Tun.OneQueue,                             config_parse_warn_compat,                  DISABLED_LEGACY,               0
Tun.MultiQueue,                           config_parse_bool,                         0,                             offsetof(TunTap, multi_queue)
Tun.PacketInfo,                           config_parse_bool,                         0,                             offsetof(TunTap, packet_info)
Tun.VNetHeader,                           config_parse_bool,                         0,                             offsetof(TunTap, vnet_hdr)
Tun.User,                                 config_parse_string,                       0,                             offsetof(TunTap, user_name)
Tun.Group,                                config_parse_string,                       0,                             offsetof(TunTap, group_name)
Tap.OneQueue,                             config_parse_warn_compat,                  DISABLED_LEGACY,               0
Tap.MultiQueue,                           config_parse_bool,                         0,                             offsetof(TunTap, multi_queue)
Tap.PacketInfo,                           config_parse_bool,                         0,                             offsetof(TunTap, packet_info)
Tap.VNetHeader,                           config_parse_bool,                         0,                             offsetof(TunTap, vnet_hdr)
Tap.User,                                 config_parse_string,                       0,                             offsetof(TunTap, user_name)
Tap.Group,                                config_parse_string,                       0,                             offsetof(TunTap, group_name)
Bond.Mode,                                config_parse_bond_mode,                    0,                             offsetof(Bond, mode)
Bond.TransmitHashPolicy,                  config_parse_bond_xmit_hash_policy,        0,                             offsetof(Bond, xmit_hash_policy)
Bond.LACPTransmitRate,                    config_parse_bond_lacp_rate,               0,                             offsetof(Bond, lacp_rate)
Bond.AdSelect,                            config_parse_bond_ad_select,               0,                             offsetof(Bond, ad_select)
Bond.FailOverMACPolicy,                   config_parse_bond_fail_over_mac,           0,                             offsetof(Bond, fail_over_mac)
Bond.ARPIPTargets,                        config_parse_arp_ip_target_address,        0,                             0
Bond.ARPValidate,                         config_parse_bond_arp_validate,            0,                             offsetof(Bond, arp_validate)
Bond.ARPAllTargets,                       config_parse_bond_arp_all_targets,         0,                             offsetof(Bond, arp_all_targets)
Bond.PrimaryReselectPolicy,               config_parse_bond_primary_reselect,        0,                             offsetof(Bond, primary_reselect)
Bond.ResendIGMP,                          config_parse_unsigned,                     0,                             offsetof(Bond, resend_igmp)
Bond.PacketsPerSlave,                     config_parse_unsigned,                     0,                             offsetof(Bond, packets_per_slave)
Bond.GratuitousARP,                       config_parse_unsigned,                     0,                             offsetof(Bond, num_grat_arp)
Bond.AllSlavesActive,                     config_parse_bool,                         0,                             offsetof(Bond, all_slaves_active)
Bond.DynamicTransmitLoadBalancing,        config_parse_tristate,                     0,                             offsetof(Bond, tlb_dynamic_lb)
Bond.MinLinks,                            config_parse_unsigned,                     0,                             offsetof(Bond, min_links)
Bond.MIIMonitorSec,                       config_parse_sec,                          0,                             offsetof(Bond, miimon)
Bond.UpDelaySec,                          config_parse_sec,                          0,                             offsetof(Bond, updelay)
Bond.DownDelaySec,                        config_parse_sec,                          0,                             offsetof(Bond, downdelay)
Bond.ARPIntervalSec,                      config_parse_sec,                          0,                             offsetof(Bond, arp_interval)
Bond.LearnPacketIntervalSec,              config_parse_sec,                          0,                             offsetof(Bond, lp_interval)
Bond.AdActorSystemPriority,               config_parse_ad_actor_sys_prio,            0,                             offsetof(Bond, ad_actor_sys_prio)
Bond.AdUserPortKey,                       config_parse_ad_user_port_key,             0,                             offsetof(Bond, ad_user_port_key)
Bond.AdActorSystem,                       config_parse_ad_actor_system,              0,                             offsetof(Bond, ad_actor_system)
Bridge.HelloTimeSec,                      config_parse_sec,                          0,                             offsetof(Bridge, hello_time)
Bridge.MaxAgeSec,                         config_parse_sec,                          0,                             offsetof(Bridge, max_age)
Bridge.AgeingTimeSec,                     config_parse_sec,                          0,                             offsetof(Bridge, ageing_time)
Bridge.ForwardDelaySec,                   config_parse_sec,                          0,                             offsetof(Bridge, forward_delay)
Bridge.Priority,                          config_parse_uint16,                       0,                             offsetof(Bridge, priority)
Bridge.GroupForwardMask,                  config_parse_uint16,                       0,                             offsetof(Bridge, group_fwd_mask)
Bridge.DefaultPVID,                       config_parse_default_port_vlanid,          0,                             offsetof(Bridge, default_pvid)
Bridge.MulticastQuerier,                  config_parse_tristate,                     0,                             offsetof(Bridge, mcast_querier)
Bridge.MulticastSnooping,                 config_parse_tristate,                     0,                             offsetof(Bridge, mcast_snooping)
Bridge.VLANFiltering,                     config_parse_tristate,                     0,                             offsetof(Bridge, vlan_filtering)
Bridge.STP,                               config_parse_tristate,                     0,                             offsetof(Bridge, stp)
Bridge.MulticastIGMPVersion,              config_parse_uint8,                        0,                             offsetof(Bridge, igmp_version)
VRF.TableId,                              config_parse_uint32,                       0,                             offsetof(Vrf, table) /* deprecated */
VRF.Table,                                config_parse_uint32,                       0,                             offsetof(Vrf, table)
WireGuard.FirewallMark,                   config_parse_unsigned,                     0,                             offsetof(Wireguard, fwmark)
WireGuard.FwMark,                         config_parse_unsigned,                     0,                             offsetof(Wireguard, fwmark) /* deprecated */
WireGuard.ListenPort,                     config_parse_wireguard_listen_port,        0,                             offsetof(Wireguard, port)
WireGuard.PrivateKey,                     config_parse_wireguard_private_key,        0,                             0
WireGuard.PrivateKeyFile,                 config_parse_wireguard_private_key_file,   0,                             0
WireGuardPeer.AllowedIPs,                 config_parse_wireguard_allowed_ips,        0,                             0
WireGuardPeer.Endpoint,                   config_parse_wireguard_endpoint,           0,                             0
WireGuardPeer.PublicKey,                  config_parse_wireguard_public_key,         0,                             0
WireGuardPeer.PresharedKey,               config_parse_wireguard_preshared_key,      0,                             0
WireGuardPeer.PresharedKeyFile,           config_parse_wireguard_preshared_key_file, 0,                             0
WireGuardPeer.PersistentKeepalive,        config_parse_wireguard_keepalive,          0,                             0
Xfrm.InterfaceId,                         config_parse_uint32,                       0,                             offsetof(Xfrm, if_id)
Xfrm.Independent,                         config_parse_bool,                         0,                             offsetof(Xfrm, independent)
