1/* SPDX-License-Identifier: LGPL-2.1-or-later */ 2%{ 3#if __GNUC__ >= 7 4_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") 5#endif 6#include <stddef.h> 7#include "bareudp.h" 8#include "batadv.h" 9#include "bond.h" 10#include "bridge.h" 11#include "conf-parser.h" 12#include "fou-tunnel.h" 13#include "geneve.h" 14#include "ipoib.h" 15#include "ipvlan.h" 16#include "l2tp-tunnel.h" 17#include "macsec.h" 18#include "macvlan.h" 19#include "net-condition.h" 20#include "netdev.h" 21#include "tunnel.h" 22#include "tuntap.h" 23#include "veth.h" 24#include "vlan-util.h" 25#include "vlan.h" 26#include "vrf.h" 27#include "vxcan.h" 28#include "vxlan.h" 29#include "wireguard.h" 30#include "wlan.h" 31#include "xfrm.h" 32%} 33struct ConfigPerfItem; 34%null_strings 35%language=ANSI-C 36%define slot-name section_and_lvalue 37%define hash-function-name network_netdev_gperf_hash 38%define lookup-function-name network_netdev_gperf_lookup 39%readonly-tables 40%omit-struct-type 41%struct-type 42%includes 43%% 44Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(NetDev, conditions) 45Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(NetDev, conditions) 46Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, conditions) 47Match.KernelVersion, config_parse_net_condition, CONDITION_KERNEL_VERSION, offsetof(NetDev, conditions) 48Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(NetDev, conditions) 49Match.Firmware, config_parse_net_condition, CONDITION_FIRMWARE, offsetof(NetDev, conditions) 50NetDev.Description, config_parse_string, 0, offsetof(NetDev, description) 51NetDev.Name, config_parse_ifname, 0, offsetof(NetDev, ifname) 52NetDev.Kind, config_parse_netdev_kind, 0, offsetof(NetDev, kind) 53NetDev.MTUBytes, config_parse_mtu, AF_UNSPEC, offsetof(NetDev, mtu) 54NetDev.MACAddress, config_parse_netdev_hw_addr, ETH_ALEN, offsetof(NetDev, hw_addr) 55VLAN.Id, config_parse_vlanid, 0, offsetof(VLan, id) 56VLAN.Protocol, config_parse_vlanprotocol, 0, offsetof(VLan, protocol) 57VLAN.GVRP, config_parse_tristate, 0, offsetof(VLan, gvrp) 58VLAN.MVRP, config_parse_tristate, 0, offsetof(VLan, mvrp) 59VLAN.LooseBinding, config_parse_tristate, 0, offsetof(VLan, loose_binding) 60VLAN.ReorderHeader, config_parse_tristate, 0, offsetof(VLan, reorder_hdr) 61VLAN.EgressQOSMaps, config_parse_vlan_qos_maps, 0, offsetof(VLan, egress_qos_maps) 62VLAN.IngressQOSMaps, config_parse_vlan_qos_maps, 0, offsetof(VLan, ingress_qos_maps) 63MACVLAN.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) 64MACVLAN.SourceMACAddress, config_parse_ether_addrs, 0, offsetof(MacVlan, match_source_mac) 65MACVLAN.BroadcastMulticastQueueLength, config_parse_macvlan_broadcast_queue_size, 0, offsetof(MacVlan, bc_queue_length) 66MACVTAP.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) 67MACVTAP.SourceMACAddress, config_parse_ether_addrs, 0, offsetof(MacVlan, match_source_mac) 68IPVLAN.Mode, config_parse_ipvlan_mode, 0, offsetof(IPVlan, mode) 69IPVLAN.Flags, config_parse_ipvlan_flags, 0, offsetof(IPVlan, flags) 70IPVTAP.Mode, config_parse_ipvlan_mode, 0, offsetof(IPVlan, mode) 71IPVTAP.Flags, config_parse_ipvlan_flags, 0, offsetof(IPVlan, flags) 72Tunnel.Local, config_parse_tunnel_local_address, 0, 0 73Tunnel.Remote, config_parse_tunnel_remote_address, 0, 0 74Tunnel.TOS, config_parse_unsigned, 0, offsetof(Tunnel, tos) 75Tunnel.TTL, config_parse_unsigned, 0, offsetof(Tunnel, ttl) 76Tunnel.Key, config_parse_tunnel_key, 0, offsetof(Tunnel, key) 77Tunnel.InputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, ikey) 78Tunnel.OutputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, okey) 79Tunnel.DiscoverPathMTU, config_parse_bool, 0, offsetof(Tunnel, pmtudisc) 80Tunnel.Mode, config_parse_ip6tnl_mode, 0, offsetof(Tunnel, ip6tnl_mode) 81Tunnel.IPv6FlowLabel, config_parse_ipv6_flowlabel, 0, 0 82Tunnel.CopyDSCP, config_parse_bool, 0, offsetof(Tunnel, copy_dscp) 83Tunnel.EncapsulationLimit, config_parse_encap_limit, 0, 0 84Tunnel.Independent, config_parse_bool, 0, offsetof(Tunnel, independent) 85Tunnel.AssignToLoopback, config_parse_bool, 0, offsetof(Tunnel, assign_to_loopback) 86Tunnel.AllowLocalRemote, config_parse_tristate, 0, offsetof(Tunnel, allow_localremote) 87Tunnel.FooOverUDP, config_parse_bool, 0, offsetof(Tunnel, fou_tunnel) 88Tunnel.FOUDestinationPort, config_parse_ip_port, 0, offsetof(Tunnel, fou_destination_port) 89Tunnel.FOUSourcePort, config_parse_ip_port, 0, offsetof(Tunnel, encap_src_port) 90Tunnel.Encapsulation, config_parse_fou_encap_type, 0, offsetof(Tunnel, fou_encap_type) 91Tunnel.IPv6RapidDeploymentPrefix, config_parse_6rd_prefix, 0, 0 92Tunnel.ERSPANIndex, config_parse_uint32, 0, offsetof(Tunnel, erspan_index) 93Tunnel.SerializeTunneledPackets, config_parse_tristate, 0, offsetof(Tunnel, gre_erspan_sequence) 94Tunnel.ISATAP, config_parse_tristate, 0, offsetof(Tunnel, isatap) 95Tunnel.External, config_parse_bool, 0, offsetof(Tunnel, external) 96FooOverUDP.Protocol, config_parse_ip_protocol, 0, offsetof(FouTunnel, fou_protocol) 97FooOverUDP.Encapsulation, config_parse_fou_encap_type, 0, offsetof(FouTunnel, fou_encap_type) 98FooOverUDP.Port, config_parse_ip_port, 0, offsetof(FouTunnel, port) 99FooOverUDP.PeerPort, config_parse_ip_port, 0, offsetof(FouTunnel, peer_port) 100FooOverUDP.Local, config_parse_fou_tunnel_address, 0, offsetof(FouTunnel, local) 101FooOverUDP.Peer, config_parse_fou_tunnel_address, 0, offsetof(FouTunnel, peer) 102L2TP.TunnelId, config_parse_l2tp_tunnel_id, 0, offsetof(L2tpTunnel, tunnel_id) 103L2TP.PeerTunnelId, config_parse_l2tp_tunnel_id, 0, offsetof(L2tpTunnel, peer_tunnel_id) 104L2TP.UDPSourcePort, config_parse_ip_port, 0, offsetof(L2tpTunnel, l2tp_udp_sport) 105L2TP.UDPDestinationPort, config_parse_ip_port, 0, offsetof(L2tpTunnel, l2tp_udp_dport) 106L2TP.Local, config_parse_l2tp_tunnel_local_address, 0, 0 107L2TP.Remote, config_parse_l2tp_tunnel_remote_address, 0, 0 108L2TP.EncapsulationType, config_parse_l2tp_encap_type, 0, offsetof(L2tpTunnel, l2tp_encap_type) 109L2TP.UDPCheckSum, config_parse_bool, 0, offsetof(L2tpTunnel, udp_csum) 110L2TP.UDP6CheckSumRx, config_parse_bool, 0, offsetof(L2tpTunnel, udp6_csum_rx) 111L2TP.UDP6CheckSumTx, config_parse_bool, 0, offsetof(L2tpTunnel, udp6_csum_tx) 112L2TPSession.SessionId, config_parse_l2tp_session_id, 0, 0 113L2TPSession.PeerSessionId, config_parse_l2tp_session_id, 0, 0 114L2TPSession.Layer2SpecificHeader, config_parse_l2tp_session_l2spec, 0, 0 115L2TPSession.Name, config_parse_l2tp_session_name, 0, 0 116Peer.Name, config_parse_ifname, 0, offsetof(Veth, ifname_peer) 117Peer.MACAddress, config_parse_netdev_hw_addr, ETH_ALEN, offsetof(Veth, hw_addr_peer) 118VXCAN.Peer, config_parse_ifname, 0, offsetof(VxCan, ifname_peer) 119VXLAN.VNI, config_parse_uint32, 0, offsetof(VxLan, vni) 120VXLAN.Id, config_parse_uint32, 0, offsetof(VxLan, vni) /* deprecated */ 121VXLAN.Group, config_parse_vxlan_address, 0, offsetof(VxLan, group) 122VXLAN.Local, config_parse_vxlan_address, 0, offsetof(VxLan, local) 123VXLAN.Remote, config_parse_vxlan_address, 0, offsetof(VxLan, remote) 124VXLAN.TOS, config_parse_unsigned, 0, offsetof(VxLan, tos) 125VXLAN.TTL, config_parse_vxlan_ttl, 0, offsetof(VxLan, ttl) 126VXLAN.MacLearning, config_parse_bool, 0, offsetof(VxLan, learning) 127VXLAN.ARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) 128VXLAN.ReduceARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) 129VXLAN.L2MissNotification, config_parse_bool, 0, offsetof(VxLan, l2miss) 130VXLAN.L3MissNotification, config_parse_bool, 0, offsetof(VxLan, l3miss) 131VXLAN.RouteShortCircuit, config_parse_bool, 0, offsetof(VxLan, route_short_circuit) 132VXLAN.UDPCheckSum, config_parse_bool, 0, offsetof(VxLan, udpcsum) 133VXLAN.UDPChecksum, config_parse_bool, 0, offsetof(VxLan, udpcsum) 134VXLAN.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) 135VXLAN.UDP6ZeroChecksumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) 136VXLAN.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) 137VXLAN.UDP6ZeroChecksumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) 138VXLAN.RemoteChecksumTx, config_parse_bool, 0, offsetof(VxLan, remote_csum_tx) 139VXLAN.RemoteChecksumRx, config_parse_bool, 0, offsetof(VxLan, remote_csum_rx) 140VXLAN.FDBAgeingSec, config_parse_sec, 0, offsetof(VxLan, fdb_ageing) 141VXLAN.GroupPolicyExtension, config_parse_bool, 0, offsetof(VxLan, group_policy) 142VXLAN.GenericProtocolExtension, config_parse_bool, 0, offsetof(VxLan, generic_protocol_extension) 143VXLAN.MaximumFDBEntries, config_parse_unsigned, 0, offsetof(VxLan, max_fdb) 144VXLAN.PortRange, config_parse_port_range, 0, 0 145VXLAN.DestinationPort, config_parse_ip_port, 0, offsetof(VxLan, dest_port) 146VXLAN.FlowLabel, config_parse_flow_label, 0, 0 147VXLAN.IPDoNotFragment, config_parse_df, 0, offsetof(VxLan, df) 148VXLAN.Independent, config_parse_bool, 0, offsetof(VxLan, independent) 149GENEVE.Id, config_parse_geneve_vni, 0, offsetof(Geneve, id) 150GENEVE.Remote, config_parse_geneve_address, 0, offsetof(Geneve, remote) 151GENEVE.TOS, config_parse_uint8, 0, offsetof(Geneve, tos) 152GENEVE.TTL, config_parse_geneve_ttl, 0, offsetof(Geneve, ttl) 153GENEVE.UDPChecksum, config_parse_bool, 0, offsetof(Geneve, udpcsum) 154GENEVE.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumrx) 155GENEVE.UDP6ZeroChecksumRx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumrx) 156GENEVE.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumtx) 157GENEVE.UDP6ZeroChecksumTx, config_parse_bool, 0, offsetof(Geneve, udp6zerocsumtx) 158GENEVE.DestinationPort, config_parse_ip_port, 0, offsetof(Geneve, dest_port) 159GENEVE.IPDoNotFragment, config_parse_geneve_df, 0, offsetof(Geneve, geneve_df) 160GENEVE.FlowLabel, config_parse_geneve_flow_label, 0, 0 161MACsec.Port, config_parse_macsec_port, 0, 0 162MACsec.Encrypt, config_parse_tristate, 0, offsetof(MACsec, encrypt) 163MACsecReceiveChannel.Port, config_parse_macsec_port, 0, 0 164MACsecReceiveChannel.MACAddress, config_parse_macsec_hw_address, 0, 0 165MACsecTransmitAssociation.PacketNumber, config_parse_macsec_packet_number, 0, 0 166MACsecTransmitAssociation.KeyId, config_parse_macsec_key_id, 0, 0 167MACsecTransmitAssociation.Key, config_parse_macsec_key, 0, 0 168MACsecTransmitAssociation.KeyFile, config_parse_macsec_key_file, 0, 0 169MACsecTransmitAssociation.Activate, config_parse_macsec_sa_activate, 0, 0 170MACsecTransmitAssociation.UseForEncoding, config_parse_macsec_use_for_encoding, 0, 0 171MACsecReceiveAssociation.Port, config_parse_macsec_port, 0, 0 172MACsecReceiveAssociation.MACAddress, config_parse_macsec_hw_address, 0, 0 173MACsecReceiveAssociation.PacketNumber, config_parse_macsec_packet_number, 0, 0 174MACsecReceiveAssociation.KeyId, config_parse_macsec_key_id, 0, 0 175MACsecReceiveAssociation.Key, config_parse_macsec_key, 0, 0 176MACsecReceiveAssociation.KeyFile, config_parse_macsec_key_file, 0, 0 177MACsecReceiveAssociation.Activate, config_parse_macsec_sa_activate, 0, 0 178Tun.OneQueue, config_parse_warn_compat, DISABLED_LEGACY, 0 179Tun.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) 180Tun.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) 181Tun.VNetHeader, config_parse_bool, 0, offsetof(TunTap, vnet_hdr) 182Tun.User, config_parse_string, CONFIG_PARSE_STRING_SAFE, offsetof(TunTap, user_name) 183Tun.Group, config_parse_string, CONFIG_PARSE_STRING_SAFE, offsetof(TunTap, group_name) 184Tap.OneQueue, config_parse_warn_compat, DISABLED_LEGACY, 0 185Tap.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) 186Tap.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) 187Tap.VNetHeader, config_parse_bool, 0, offsetof(TunTap, vnet_hdr) 188Tap.User, config_parse_string, CONFIG_PARSE_STRING_SAFE, offsetof(TunTap, user_name) 189Tap.Group, config_parse_string, CONFIG_PARSE_STRING_SAFE, offsetof(TunTap, group_name) 190Bond.Mode, config_parse_bond_mode, 0, offsetof(Bond, mode) 191Bond.TransmitHashPolicy, config_parse_bond_xmit_hash_policy, 0, offsetof(Bond, xmit_hash_policy) 192Bond.LACPTransmitRate, config_parse_bond_lacp_rate, 0, offsetof(Bond, lacp_rate) 193Bond.AdSelect, config_parse_bond_ad_select, 0, offsetof(Bond, ad_select) 194Bond.FailOverMACPolicy, config_parse_bond_fail_over_mac, 0, offsetof(Bond, fail_over_mac) 195Bond.ARPIPTargets, config_parse_arp_ip_target_address, 0, 0 196Bond.ARPValidate, config_parse_bond_arp_validate, 0, offsetof(Bond, arp_validate) 197Bond.ARPAllTargets, config_parse_bond_arp_all_targets, 0, offsetof(Bond, arp_all_targets) 198Bond.PrimaryReselectPolicy, config_parse_bond_primary_reselect, 0, offsetof(Bond, primary_reselect) 199Bond.ResendIGMP, config_parse_unsigned, 0, offsetof(Bond, resend_igmp) 200Bond.PacketsPerSlave, config_parse_unsigned, 0, offsetof(Bond, packets_per_slave) 201Bond.GratuitousARP, config_parse_unsigned, 0, offsetof(Bond, num_grat_arp) 202Bond.AllSlavesActive, config_parse_bool, 0, offsetof(Bond, all_slaves_active) 203Bond.DynamicTransmitLoadBalancing, config_parse_tristate, 0, offsetof(Bond, tlb_dynamic_lb) 204Bond.MinLinks, config_parse_unsigned, 0, offsetof(Bond, min_links) 205Bond.MIIMonitorSec, config_parse_sec, 0, offsetof(Bond, miimon) 206Bond.UpDelaySec, config_parse_sec, 0, offsetof(Bond, updelay) 207Bond.DownDelaySec, config_parse_sec, 0, offsetof(Bond, downdelay) 208Bond.ARPIntervalSec, config_parse_sec, 0, offsetof(Bond, arp_interval) 209Bond.LearnPacketIntervalSec, config_parse_sec, 0, offsetof(Bond, lp_interval) 210Bond.AdActorSystemPriority, config_parse_ad_actor_sys_prio, 0, offsetof(Bond, ad_actor_sys_prio) 211Bond.AdUserPortKey, config_parse_ad_user_port_key, 0, offsetof(Bond, ad_user_port_key) 212Bond.AdActorSystem, config_parse_ad_actor_system, 0, offsetof(Bond, ad_actor_system) 213Bridge.HelloTimeSec, config_parse_sec, 0, offsetof(Bridge, hello_time) 214Bridge.MaxAgeSec, config_parse_sec, 0, offsetof(Bridge, max_age) 215Bridge.AgeingTimeSec, config_parse_sec, 0, offsetof(Bridge, ageing_time) 216Bridge.ForwardDelaySec, config_parse_sec, 0, offsetof(Bridge, forward_delay) 217Bridge.Priority, config_parse_uint16, 0, offsetof(Bridge, priority) 218Bridge.GroupForwardMask, config_parse_uint16, 0, offsetof(Bridge, group_fwd_mask) 219Bridge.DefaultPVID, config_parse_default_port_vlanid, 0, offsetof(Bridge, default_pvid) 220Bridge.MulticastQuerier, config_parse_tristate, 0, offsetof(Bridge, mcast_querier) 221Bridge.MulticastSnooping, config_parse_tristate, 0, offsetof(Bridge, mcast_snooping) 222Bridge.VLANFiltering, config_parse_tristate, 0, offsetof(Bridge, vlan_filtering) 223Bridge.VLANProtocol, config_parse_vlanprotocol, 0, offsetof(Bridge, vlan_protocol) 224Bridge.STP, config_parse_tristate, 0, offsetof(Bridge, stp) 225Bridge.MulticastIGMPVersion, config_parse_uint8, 0, offsetof(Bridge, igmp_version) 226VRF.TableId, config_parse_uint32, 0, offsetof(Vrf, table) /* deprecated */ 227VRF.Table, config_parse_uint32, 0, offsetof(Vrf, table) 228BareUDP.DestinationPort, config_parse_ip_port, 0, offsetof(BareUDP, dest_port) 229BareUDP.EtherType, config_parse_bare_udp_iftype, 0, offsetof(BareUDP, iftype) 230WireGuard.FirewallMark, config_parse_unsigned, 0, offsetof(Wireguard, fwmark) 231WireGuard.FwMark, config_parse_unsigned, 0, offsetof(Wireguard, fwmark) /* deprecated */ 232WireGuard.ListenPort, config_parse_wireguard_listen_port, 0, offsetof(Wireguard, port) 233WireGuard.PrivateKey, config_parse_wireguard_private_key, 0, 0 234WireGuard.PrivateKeyFile, config_parse_wireguard_private_key_file, 0, 0 235WireGuard.RouteTable, config_parse_wireguard_route_table, 0, offsetof(Wireguard, route_table) 236WireGuard.RouteMetric, config_parse_wireguard_route_priority, 0, offsetof(Wireguard, route_priority) 237WireGuardPeer.AllowedIPs, config_parse_wireguard_allowed_ips, 0, 0 238WireGuardPeer.Endpoint, config_parse_wireguard_endpoint, 0, 0 239WireGuardPeer.PublicKey, config_parse_wireguard_peer_key, 0, 0 240WireGuardPeer.PresharedKey, config_parse_wireguard_peer_key, 0, 0 241WireGuardPeer.PresharedKeyFile, config_parse_wireguard_preshared_key_file, 0, 0 242WireGuardPeer.PersistentKeepalive, config_parse_wireguard_keepalive, 0, 0 243WireGuardPeer.RouteTable, config_parse_wireguard_peer_route_table, 0, 0 244WireGuardPeer.RouteMetric, config_parse_wireguard_peer_route_priority,0, 0 245Xfrm.InterfaceId, config_parse_uint32, 0, offsetof(Xfrm, if_id) 246Xfrm.Independent, config_parse_bool, 0, offsetof(Xfrm, independent) 247BatmanAdvanced.Aggregation, config_parse_bool, 0, offsetof(BatmanAdvanced, aggregation) 248BatmanAdvanced.BridgeLoopAvoidance, config_parse_bool, 0, offsetof(BatmanAdvanced, bridge_loop_avoidance) 249BatmanAdvanced.DistributedArpTable, config_parse_bool, 0, offsetof(BatmanAdvanced, distributed_arp_table) 250BatmanAdvanced.Fragmentation, config_parse_bool, 0, offsetof(BatmanAdvanced, fragmentation) 251BatmanAdvanced.GatewayMode, config_parse_batadv_gateway_mode, 0, offsetof(BatmanAdvanced, gateway_mode) 252BatmanAdvanced.GatewayBandwithDown, config_parse_badadv_bandwidth, 0, offsetof(BatmanAdvanced, gateway_bandwidth_down) 253BatmanAdvanced.GatewayBandwithUp, config_parse_badadv_bandwidth, 0, offsetof(BatmanAdvanced, gateway_bandwidth_up) 254BatmanAdvanced.GatewayBandwidthDown, config_parse_badadv_bandwidth, 0, offsetof(BatmanAdvanced, gateway_bandwidth_down) 255BatmanAdvanced.GatewayBandwidthUp, config_parse_badadv_bandwidth, 0, offsetof(BatmanAdvanced, gateway_bandwidth_up) 256BatmanAdvanced.HopPenalty, config_parse_uint8, 0, offsetof(BatmanAdvanced, hop_penalty) 257BatmanAdvanced.OriginatorIntervalSec, config_parse_sec, 0, offsetof(BatmanAdvanced, originator_interval) 258BatmanAdvanced.RoutingAlgorithm, config_parse_batadv_routing_algorithm, 0, offsetof(BatmanAdvanced, routing_algorithm) 259IPoIB.PartitionKey, config_parse_ipoib_pkey, 0, offsetof(IPoIB, pkey) 260IPoIB.Mode, config_parse_ipoib_mode, 0, offsetof(IPoIB, mode) 261IPoIB.IgnoreUserspaceMulticastGroups, config_parse_tristate, 0, offsetof(IPoIB, umcast) 262WLAN.PhysicalDevice, config_parse_wiphy, 0, 0 263WLAN.Type, config_parse_wlan_iftype, 0, offsetof(WLan, iftype) 264WLAN.WDS, config_parse_tristate, 0, offsetof(WLan, wds) 265