%{
#include <stddef.h>
#include "conf-parser.h"
#include "networkd-netdev.h"
#include "networkd-netdev-tunnel.h"
#include "networkd-netdev-bond.h"
#include "networkd-netdev-macvlan.h"
#include "network-internal.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, match_host)
Match.Virtualization,    config_parse_net_condition,         CONDITION_VIRTUALIZATION,      offsetof(NetDev, match_virt)
Match.KernelCommandLine, config_parse_net_condition,         CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, match_kernel)
Match.Architecture,      config_parse_net_condition,         CONDITION_ARCHITECTURE,        offsetof(NetDev, match_arch)
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_iec_size,              0,                             offsetof(NetDev, mtu)
NetDev.MACAddress,       config_parse_hwaddr,                0,                             offsetof(NetDev, mac)
VLAN.Id,                 config_parse_uint64,                0,                             offsetof(VLan, id)
MACVLAN.Mode,            config_parse_macvlan_mode,          0,                             offsetof(MacVlan, mode)
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.DiscoverPathMTU,  config_parse_bool,                  0,                             offsetof(Tunnel, pmtudisc)
Peer.Name,               config_parse_ifname,                0,                             offsetof(Veth, ifname_peer)
Peer.MACAddress,         config_parse_hwaddr,                0,                             offsetof(Veth, mac_peer)
VXLAN.Id,                config_parse_uint64,                0,                             offsetof(VxLan, id)
VXLAN.Group,             config_parse_tunnel_address,        0,                             offsetof(VxLan, group)
VXLAN.TOS,               config_parse_unsigned,              0,                             offsetof(VxLan, tos)
VXLAN.TTL,               config_parse_unsigned,              0,                             offsetof(VxLan, ttl)
VXLAN.MacLearning,       config_parse_bool,                  0,                             offsetof(VxLan, learning)
Tun.OneQueue,            config_parse_bool,                  0,                             offsetof(TunTap, one_queue)
Tun.MultiQueue,          config_parse_bool,                  0,                             offsetof(TunTap, multi_queue)
Tun.PacketInfo,          config_parse_bool,                  0,                             offsetof(TunTap, packet_info)
Tun.User,                config_parse_string,                0,                             offsetof(TunTap, user_name)
Tun.Group,               config_parse_string,                0,                             offsetof(TunTap, group_name)
Tap.OneQueue,            config_parse_bool,                  0,                             offsetof(TunTap, one_queue)
Tap.MultiQueue,          config_parse_bool,                  0,                             offsetof(TunTap, multi_queue)
Tap.PacketInfo,          config_parse_bool,                  0,                             offsetof(TunTap, packet_info)
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.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)