| %{ |
| #if __GNUC__ >= 7 |
| _Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") |
| #endif |
| #include <stddef.h> |
| #include "conf-parser.h" |
| #include "network-internal.h" |
| #include "netdev/bond.h" |
| #include "netdev/bridge.h" |
| #include "netdev/geneve.h" |
| #include "netdev/ipvlan.h" |
| #include "netdev/macvlan.h" |
| #include "netdev/tunnel.h" |
| #include "netdev/tuntap.h" |
| #include "netdev/veth.h" |
| #include "netdev/vlan.h" |
| #include "netdev/vxlan.h" |
| #include "netdev/vrf.h" |
| #include "netdev/netdev.h" |
| #include "netdev/vxcan.h" |
| #include "netdev/wireguard.h" |
| #include "netdev/fou-tunnel.h" |
| #include "netdev/l2tp-tunnel.h" |
| #include "vlan-util.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) |
| 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.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) |
| 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.Id, config_parse_uint64, 0, offsetof(VxLan, id) |
| VXLAN.Group, config_parse_vxlan_address, 0, offsetof(VxLan, remote) |
| 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_unsigned, 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.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 |
| 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_uint8, 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.FlowLabel, config_parse_geneve_flow_label, 0, 0 |
| 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.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) |
| VRF.TableId, config_parse_uint32, 0, offsetof(Vrf, table) /* deprecated */ |
| VRF.Table, config_parse_uint32, 0, offsetof(Vrf, table) |
| WireGuard.FwMark, config_parse_unsigned, 0, offsetof(Wireguard, fwmark) |
| 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.PersistentKeepalive, config_parse_wireguard_keepalive, 0, 0 |