%{
#include <stddef.h>
#include "conf-parser.h"
#include "network-internal.h"
#include "link-config.h"
#include "ethtool-util.h"
%}
struct ConfigPerfItem;
%null_strings
%language=ANSI-C
%define slot-name section_and_lvalue
%define hash-function-name link_config_gperf_hash
%define lookup-function-name link_config_gperf_lookup
%readonly-tables
%omit-struct-type
%struct-type
%includes
%%
Match.MACAddress,                config_parse_hwaddr,        0,                             offsetof(link_config, match_mac)
Match.OriginalName,              config_parse_ifnames,       0,                             offsetof(link_config, match_name)
Match.Path,                      config_parse_strv,          0,                             offsetof(link_config, match_path)
Match.Driver,                    config_parse_strv,          0,                             offsetof(link_config, match_driver)
Match.Type,                      config_parse_strv,          0,                             offsetof(link_config, match_type)
Match.Host,                      config_parse_net_condition, CONDITION_HOST,                offsetof(link_config, match_host)
Match.Virtualization,            config_parse_net_condition, CONDITION_VIRTUALIZATION,      offsetof(link_config, match_virt)
Match.KernelCommandLine,         config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(link_config, match_kernel)
Match.Architecture,              config_parse_net_condition, CONDITION_ARCHITECTURE,        offsetof(link_config, match_arch)
Link.Description,                config_parse_string,        0,                             offsetof(link_config, description)
Link.MACAddressPolicy,           config_parse_mac_policy,    0,                             offsetof(link_config, mac_policy)
Link.MACAddress,                 config_parse_hwaddr,        0,                             offsetof(link_config, mac)
Link.NamePolicy,                 config_parse_name_policy,   0,                             offsetof(link_config, name_policy)
Link.Name,                       config_parse_ifname,        0,                             offsetof(link_config, name)
Link.Alias,                      config_parse_ifalias,       0,                             offsetof(link_config, alias)
Link.MTUBytes,                   config_parse_iec_size,      0,                             offsetof(link_config, mtu)
Link.BitsPerSecond,              config_parse_si_size,       0,                             offsetof(link_config, speed)
Link.Duplex,                     config_parse_duplex,        0,                             offsetof(link_config, duplex)
Link.AutoNegotiation,            config_parse_tristate,      0,                             offsetof(link_config, autonegotiation)
Link.WakeOnLan,                  config_parse_wol,           0,                             offsetof(link_config, wol)
Link.Port,                       config_parse_port,          0,                             offsetof(link_config, port)
Link.GenericSegmentationOffload, config_parse_tristate,      0,                             offsetof(link_config, features[NET_DEV_FEAT_GSO])
Link.TCPSegmentationOffload,     config_parse_tristate,      0,                             offsetof(link_config, features[NET_DEV_FEAT_TSO])
Link.UDPSegmentationOffload,     config_parse_tristate,      0,                             offsetof(link_config, features[NET_DEV_FEAT_UFO])
Link.GenericReceiveOffload,      config_parse_tristate,      0,                             offsetof(link_config, features[NET_DEV_FEAT_GRO])
Link.LargeReceiveOffload,        config_parse_tristate,      0,                             offsetof(link_config, features[NET_DEV_FEAT_LRO])
