]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
include: nuke include directory for BSD and Linux
authorVincent Bernat <vincent@bernat.ch>
Sat, 12 Mar 2022 13:00:24 +0000 (14:00 +0100)
committerVincent Bernat <vincent@bernat.ch>
Sat, 12 Mar 2022 13:40:55 +0000 (14:40 +0100)
We keep OSX for now as it is small and isolated (and it's difficult to
test).

Fix #503 (but really, the patch is just included)

25 files changed:
debian/copyright
include/linux/bpf_common.h [deleted file]
include/linux/ethtool.h [deleted file]
include/linux/filter.h [deleted file]
include/linux/hdlc/ioctl.h [deleted file]
include/linux/if.h [deleted file]
include/linux/if_addr.h [deleted file]
include/linux/if_bonding.h [deleted file]
include/linux/if_bridge.h [deleted file]
include/linux/if_ether.h [deleted file]
include/linux/if_link.h [deleted file]
include/linux/if_packet.h [deleted file]
include/linux/if_vlan.h [deleted file]
include/linux/kernel.h [deleted file]
include/linux/libc-compat.h [deleted file]
include/linux/neighbour.h [deleted file]
include/linux/netlink.h [deleted file]
include/linux/rtnetlink.h [deleted file]
include/linux/sockios.h [deleted file]
include/linux/types.h [deleted file]
include/linux/wireless.h [deleted file]
include/netinet/if_ether.h [deleted file]
include/sys/queue.h [deleted file]
src/daemon/lldpd.h
src/daemon/protocols/lldp.c

index e2aa1986435bda9628ab6f9b475037e2c3b1fc9d..81c85332b60a5c2ab00f4ff3de5e16b83213bac7 100644 (file)
@@ -58,26 +58,6 @@ License: permissive
  and this notice are preserved. This file is offered as-is, without any
  warranty.
 
-Files: include/linux/*
-Copyright: Copyright (C) 1991-2012 Linus Torvalds
-           and many others
-License: GPL-2+
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version
- 2 of the License, or (at your option) any later version.
- .
- On Debian systems, the full text of the GNU General Public
- License version 2 can be found in the file
- `/usr/share/common-licenses/GPL-2'.
-Comment:
- It is believed that header files are an interface for user space and
- therefore cannot be covered by copyright.
-
-Files: include/netinet/if_ether.h include/sys/queue.h
-Copyright: Copyright (c) 1982, 1986, 1993 The Regents of the University of California
-License: BSD-3-clause
-
 Files: include/osx/*
 Copyright: Copyright (c) 2003-2010 Apple Computer, Inc
 License: APSL-2
diff --git a/include/linux/bpf_common.h b/include/linux/bpf_common.h
deleted file mode 100644 (file)
index f0fe139..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_BPF_COMMON_H__
-#define __LINUX_BPF_COMMON_H__
-
-/* Instruction classes */
-#define BPF_CLASS(code) ((code) & 0x07)
-#define                BPF_LD          0x00
-#define                BPF_LDX         0x01
-#define                BPF_ST          0x02
-#define                BPF_STX         0x03
-#define                BPF_ALU         0x04
-#define                BPF_JMP         0x05
-#define                BPF_RET         0x06
-#define                BPF_MISC        0x07
-
-/* ld/ldx fields */
-#define BPF_SIZE(code)  ((code) & 0x18)
-#define                BPF_W           0x00 /* 32-bit */
-#define                BPF_H           0x08 /* 16-bit */
-#define                BPF_B           0x10 /*  8-bit */
-/* eBPF                BPF_DW          0x18    64-bit */
-#define BPF_MODE(code)  ((code) & 0xe0)
-#define                BPF_IMM         0x00
-#define                BPF_ABS         0x20
-#define                BPF_IND         0x40
-#define                BPF_MEM         0x60
-#define                BPF_LEN         0x80
-#define                BPF_MSH         0xa0
-
-/* alu/jmp fields */
-#define BPF_OP(code)    ((code) & 0xf0)
-#define                BPF_ADD         0x00
-#define                BPF_SUB         0x10
-#define                BPF_MUL         0x20
-#define                BPF_DIV         0x30
-#define                BPF_OR          0x40
-#define                BPF_AND         0x50
-#define                BPF_LSH         0x60
-#define                BPF_RSH         0x70
-#define                BPF_NEG         0x80
-#define                BPF_MOD         0x90
-#define                BPF_XOR         0xa0
-
-#define                BPF_JA          0x00
-#define                BPF_JEQ         0x10
-#define                BPF_JGT         0x20
-#define                BPF_JGE         0x30
-#define                BPF_JSET        0x40
-#define BPF_SRC(code)   ((code) & 0x08)
-#define                BPF_K           0x00
-#define                BPF_X           0x08
-
-#ifndef BPF_MAXINSNS
-#define BPF_MAXINSNS 4096
-#endif
-
-#endif /* __LINUX_BPF_COMMON_H__ */
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
deleted file mode 100644 (file)
index 6bfbb85..0000000
+++ /dev/null
@@ -1,1846 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * ethtool.h: Defines for Linux ethtool.
- *
- * Copyright (C) 1998 David S. Miller (davem@redhat.com)
- * Copyright 2001 Jeff Garzik <jgarzik@pobox.com>
- * Portions Copyright 2001 Sun Microsystems (thockin@sun.com)
- * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
- *                                christopher.leech@intel.com,
- *                                scott.feldman@intel.com)
- * Portions Copyright (C) Sun Microsystems 2008
- */
-
-#ifndef _LINUX_ETHTOOL_H
-#define _LINUX_ETHTOOL_H
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-
-#include <limits.h> /* for INT_MAX */
-
-/* All structures exposed to userland should be defined such that they
- * have the same layout for 32-bit and 64-bit userland.
- */
-
-/**
- * struct ethtool_cmd - DEPRECATED, link control and status
- * This structure is DEPRECATED, please use struct ethtool_link_settings.
- * @cmd: Command number = %ETHTOOL_GSET or %ETHTOOL_SSET
- * @supported: Bitmask of %SUPPORTED_* flags for the link modes,
- *     physical connectors and other link features for which the
- *     interface supports autonegotiation or auto-detection.
- *     Read-only.
- * @advertising: Bitmask of %ADVERTISED_* flags for the link modes,
- *     physical connectors and other link features that are
- *     advertised through autonegotiation or enabled for
- *     auto-detection.
- * @speed: Low bits of the speed, 1Mb units, 0 to INT_MAX or SPEED_UNKNOWN
- * @duplex: Duplex mode; one of %DUPLEX_*
- * @port: Physical connector type; one of %PORT_*
- * @phy_address: MDIO address of PHY (transceiver); 0 or 255 if not
- *     applicable.  For clause 45 PHYs this is the PRTAD.
- * @transceiver: Historically used to distinguish different possible
- *     PHY types, but not in a consistent way.  Deprecated.
- * @autoneg: Enable/disable autonegotiation and auto-detection;
- *     either %AUTONEG_DISABLE or %AUTONEG_ENABLE
- * @mdio_support: Bitmask of %ETH_MDIO_SUPPORTS_* flags for the MDIO
- *     protocols supported by the interface; 0 if unknown.
- *     Read-only.
- * @maxtxpkt: Historically used to report TX IRQ coalescing; now
- *     obsoleted by &struct ethtool_coalesce.  Read-only; deprecated.
- * @maxrxpkt: Historically used to report RX IRQ coalescing; now
- *     obsoleted by &struct ethtool_coalesce.  Read-only; deprecated.
- * @speed_hi: High bits of the speed, 1Mb units, 0 to INT_MAX or SPEED_UNKNOWN
- * @eth_tp_mdix: Ethernet twisted-pair MDI(-X) status; one of
- *     %ETH_TP_MDI_*.  If the status is unknown or not applicable, the
- *     value will be %ETH_TP_MDI_INVALID.  Read-only.
- * @eth_tp_mdix_ctrl: Ethernet twisted pair MDI(-X) control; one of
- *     %ETH_TP_MDI_*.  If MDI(-X) control is not implemented, reads
- *     yield %ETH_TP_MDI_INVALID and writes may be ignored or rejected.
- *     When written successfully, the link should be renegotiated if
- *     necessary.
- * @lp_advertising: Bitmask of %ADVERTISED_* flags for the link modes
- *     and other link features that the link partner advertised
- *     through autonegotiation; 0 if unknown or not applicable.
- *     Read-only.
- *
- * The link speed in Mbps is split between @speed and @speed_hi.  Use
- * the ethtool_cmd_speed() and ethtool_cmd_speed_set() functions to
- * access it.
- *
- * If autonegotiation is disabled, the speed and @duplex represent the
- * fixed link mode and are writable if the driver supports multiple
- * link modes.  If it is enabled then they are read-only; if the link
- * is up they represent the negotiated link mode; if the link is down,
- * the speed is 0, %SPEED_UNKNOWN or the highest enabled speed and
- * @duplex is %DUPLEX_UNKNOWN or the best enabled duplex mode.
- *
- * Some hardware interfaces may have multiple PHYs and/or physical
- * connectors fitted or do not allow the driver to detect which are
- * fitted.  For these interfaces @port and/or @phy_address may be
- * writable, possibly dependent on @autoneg being %AUTONEG_DISABLE.
- * Otherwise, attempts to write different values may be ignored or
- * rejected.
- *
- * Users should assume that all fields not marked read-only are
- * writable and subject to validation by the driver.  They should use
- * %ETHTOOL_GSET to get the current values before making specific
- * changes and then applying them with %ETHTOOL_SSET.
- *
- * Drivers that implement set_settings() should validate all fields
- * other than @cmd that are not described as read-only or deprecated,
- * and must ignore all fields described as read-only.
- *
- * Deprecated fields should be ignored by both users and drivers.
- */
-struct ethtool_cmd {
-       __u32   cmd;
-       __u32   supported;
-       __u32   advertising;
-       __u16   speed;
-       __u8    duplex;
-       __u8    port;
-       __u8    phy_address;
-       __u8    transceiver;
-       __u8    autoneg;
-       __u8    mdio_support;
-       __u32   maxtxpkt;
-       __u32   maxrxpkt;
-       __u16   speed_hi;
-       __u8    eth_tp_mdix;
-       __u8    eth_tp_mdix_ctrl;
-       __u32   lp_advertising;
-       __u32   reserved[2];
-};
-
-static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
-                                        __u32 speed)
-{
-       ep->speed = (__u16)(speed & 0xFFFF);
-       ep->speed_hi = (__u16)(speed >> 16);
-}
-
-static __inline__ __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep)
-{
-       return (ep->speed_hi << 16) | ep->speed;
-}
-
-/* Device supports clause 22 register access to PHY or peripherals
- * using the interface defined in <linux/mii.h>.  This should not be
- * set if there are known to be no such peripherals present or if
- * the driver only emulates clause 22 registers for compatibility.
- */
-#define ETH_MDIO_SUPPORTS_C22  1
-
-/* Device supports clause 45 register access to PHY or peripherals
- * using the interface defined in <linux/mii.h> and <linux/mdio.h>.
- * This should not be set if there are known to be no such peripherals
- * present.
- */
-#define ETH_MDIO_SUPPORTS_C45  2
-
-#define ETHTOOL_FWVERS_LEN     32
-#define ETHTOOL_BUSINFO_LEN    32
-#define ETHTOOL_EROMVERS_LEN   32
-
-/**
- * struct ethtool_drvinfo - general driver and device information
- * @cmd: Command number = %ETHTOOL_GDRVINFO
- * @driver: Driver short name.  This should normally match the name
- *     in its bus driver structure (e.g. pci_driver::name).  Must
- *     not be an empty string.
- * @version: Driver version string; may be an empty string
- * @fw_version: Firmware version string; may be an empty string
- * @erom_version: Expansion ROM version string; may be an empty string
- * @bus_info: Device bus address.  This should match the dev_name()
- *     string for the underlying bus device, if there is one.  May be
- *     an empty string.
- * @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and
- *     %ETHTOOL_SPFLAGS commands; also the number of strings in the
- *     %ETH_SS_PRIV_FLAGS set
- * @n_stats: Number of u64 statistics returned by the %ETHTOOL_GSTATS
- *     command; also the number of strings in the %ETH_SS_STATS set
- * @testinfo_len: Number of results returned by the %ETHTOOL_TEST
- *     command; also the number of strings in the %ETH_SS_TEST set
- * @eedump_len: Size of EEPROM accessible through the %ETHTOOL_GEEPROM
- *     and %ETHTOOL_SEEPROM commands, in bytes
- * @regdump_len: Size of register dump returned by the %ETHTOOL_GREGS
- *     command, in bytes
- *
- * Users can use the %ETHTOOL_GSSET_INFO command to get the number of
- * strings in any string set (from Linux 2.6.34).
- *
- * Drivers should set at most @driver, @version, @fw_version and
- * @bus_info in their get_drvinfo() implementation.  The ethtool
- * core fills in the other fields using other driver operations.
- */
-struct ethtool_drvinfo {
-       __u32   cmd;
-       char    driver[32];
-       char    version[32];
-       char    fw_version[ETHTOOL_FWVERS_LEN];
-       char    bus_info[ETHTOOL_BUSINFO_LEN];
-       char    erom_version[ETHTOOL_EROMVERS_LEN];
-       char    reserved2[12];
-       __u32   n_priv_flags;
-       __u32   n_stats;
-       __u32   testinfo_len;
-       __u32   eedump_len;
-       __u32   regdump_len;
-};
-
-#define SOPASS_MAX     6
-
-/**
- * struct ethtool_wolinfo - Wake-On-Lan configuration
- * @cmd: Command number = %ETHTOOL_GWOL or %ETHTOOL_SWOL
- * @supported: Bitmask of %WAKE_* flags for supported Wake-On-Lan modes.
- *     Read-only.
- * @wolopts: Bitmask of %WAKE_* flags for enabled Wake-On-Lan modes.
- * @sopass: SecureOn(tm) password; meaningful only if %WAKE_MAGICSECURE
- *     is set in @wolopts.
- */
-struct ethtool_wolinfo {
-       __u32   cmd;
-       __u32   supported;
-       __u32   wolopts;
-       __u8    sopass[SOPASS_MAX];
-};
-
-/* for passing single values */
-struct ethtool_value {
-       __u32   cmd;
-       __u32   data;
-};
-
-#define PFC_STORM_PREVENTION_AUTO      0xffff
-#define PFC_STORM_PREVENTION_DISABLE   0
-
-enum tunable_id {
-       ETHTOOL_ID_UNSPEC,
-       ETHTOOL_RX_COPYBREAK,
-       ETHTOOL_TX_COPYBREAK,
-       ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
-       /*
-        * Add your fresh new tunable attribute above and remember to update
-        * tunable_strings[] in net/core/ethtool.c
-        */
-       __ETHTOOL_TUNABLE_COUNT,
-};
-
-enum tunable_type_id {
-       ETHTOOL_TUNABLE_UNSPEC,
-       ETHTOOL_TUNABLE_U8,
-       ETHTOOL_TUNABLE_U16,
-       ETHTOOL_TUNABLE_U32,
-       ETHTOOL_TUNABLE_U64,
-       ETHTOOL_TUNABLE_STRING,
-       ETHTOOL_TUNABLE_S8,
-       ETHTOOL_TUNABLE_S16,
-       ETHTOOL_TUNABLE_S32,
-       ETHTOOL_TUNABLE_S64,
-};
-
-struct ethtool_tunable {
-       __u32   cmd;
-       __u32   id;
-       __u32   type_id;
-       __u32   len;
-       void    *data[0];
-};
-
-#define DOWNSHIFT_DEV_DEFAULT_COUNT    0xff
-#define DOWNSHIFT_DEV_DISABLE          0
-
-enum phy_tunable_id {
-       ETHTOOL_PHY_ID_UNSPEC,
-       ETHTOOL_PHY_DOWNSHIFT,
-       /*
-        * Add your fresh new phy tunable attribute above and remember to update
-        * phy_tunable_strings[] in net/core/ethtool.c
-        */
-       __ETHTOOL_PHY_TUNABLE_COUNT,
-};
-
-/**
- * struct ethtool_regs - hardware register dump
- * @cmd: Command number = %ETHTOOL_GREGS
- * @version: Dump format version.  This is driver-specific and may
- *     distinguish different chips/revisions.  Drivers must use new
- *     version numbers whenever the dump format changes in an
- *     incompatible way.
- * @len: On entry, the real length of @data.  On return, the number of
- *     bytes used.
- * @data: Buffer for the register dump
- *
- * Users should use %ETHTOOL_GDRVINFO to find the maximum length of
- * a register dump for the interface.  They must allocate the buffer
- * immediately following this structure.
- */
-struct ethtool_regs {
-       __u32   cmd;
-       __u32   version;
-       __u32   len;
-       __u8    data[0];
-};
-
-/**
- * struct ethtool_eeprom - EEPROM dump
- * @cmd: Command number = %ETHTOOL_GEEPROM, %ETHTOOL_GMODULEEEPROM or
- *     %ETHTOOL_SEEPROM
- * @magic: A 'magic cookie' value to guard against accidental changes.
- *     The value passed in to %ETHTOOL_SEEPROM must match the value
- *     returned by %ETHTOOL_GEEPROM for the same device.  This is
- *     unused when @cmd is %ETHTOOL_GMODULEEEPROM.
- * @offset: Offset within the EEPROM to begin reading/writing, in bytes
- * @len: On entry, number of bytes to read/write.  On successful
- *     return, number of bytes actually read/written.  In case of
- *     error, this may indicate at what point the error occurred.
- * @data: Buffer to read/write from
- *
- * Users may use %ETHTOOL_GDRVINFO or %ETHTOOL_GMODULEINFO to find
- * the length of an on-board or module EEPROM, respectively.  They
- * must allocate the buffer immediately following this structure.
- */
-struct ethtool_eeprom {
-       __u32   cmd;
-       __u32   magic;
-       __u32   offset;
-       __u32   len;
-       __u8    data[0];
-};
-
-/**
- * struct ethtool_eee - Energy Efficient Ethernet information
- * @cmd: ETHTOOL_{G,S}EEE
- * @supported: Mask of %SUPPORTED_* flags for the speed/duplex combinations
- *     for which there is EEE support.
- * @advertised: Mask of %ADVERTISED_* flags for the speed/duplex combinations
- *     advertised as eee capable.
- * @lp_advertised: Mask of %ADVERTISED_* flags for the speed/duplex
- *     combinations advertised by the link partner as eee capable.
- * @eee_active: Result of the eee auto negotiation.
- * @eee_enabled: EEE configured mode (enabled/disabled).
- * @tx_lpi_enabled: Whether the interface should assert its tx lpi, given
- *     that eee was negotiated.
- * @tx_lpi_timer: Time in microseconds the interface delays prior to asserting
- *     its tx lpi (after reaching 'idle' state). Effective only when eee
- *     was negotiated and tx_lpi_enabled was set.
- */
-struct ethtool_eee {
-       __u32   cmd;
-       __u32   supported;
-       __u32   advertised;
-       __u32   lp_advertised;
-       __u32   eee_active;
-       __u32   eee_enabled;
-       __u32   tx_lpi_enabled;
-       __u32   tx_lpi_timer;
-       __u32   reserved[2];
-};
-
-/**
- * struct ethtool_modinfo - plugin module eeprom information
- * @cmd: %ETHTOOL_GMODULEINFO
- * @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx
- * @eeprom_len: Length of the eeprom
- *
- * This structure is used to return the information to
- * properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM.
- * The type code indicates the eeprom data format
- */
-struct ethtool_modinfo {
-       __u32   cmd;
-       __u32   type;
-       __u32   eeprom_len;
-       __u32   reserved[8];
-};
-
-/**
- * struct ethtool_coalesce - coalescing parameters for IRQs and stats updates
- * @cmd: ETHTOOL_{G,S}COALESCE
- * @rx_coalesce_usecs: How many usecs to delay an RX interrupt after
- *     a packet arrives.
- * @rx_max_coalesced_frames: Maximum number of packets to receive
- *     before an RX interrupt.
- * @rx_coalesce_usecs_irq: Same as @rx_coalesce_usecs, except that
- *     this value applies while an IRQ is being serviced by the host.
- * @rx_max_coalesced_frames_irq: Same as @rx_max_coalesced_frames,
- *     except that this value applies while an IRQ is being serviced
- *     by the host.
- * @tx_coalesce_usecs: How many usecs to delay a TX interrupt after
- *     a packet is sent.
- * @tx_max_coalesced_frames: Maximum number of packets to be sent
- *     before a TX interrupt.
- * @tx_coalesce_usecs_irq: Same as @tx_coalesce_usecs, except that
- *     this value applies while an IRQ is being serviced by the host.
- * @tx_max_coalesced_frames_irq: Same as @tx_max_coalesced_frames,
- *     except that this value applies while an IRQ is being serviced
- *     by the host.
- * @stats_block_coalesce_usecs: How many usecs to delay in-memory
- *     statistics block updates.  Some drivers do not have an
- *     in-memory statistic block, and in such cases this value is
- *     ignored.  This value must not be zero.
- * @use_adaptive_rx_coalesce: Enable adaptive RX coalescing.
- * @use_adaptive_tx_coalesce: Enable adaptive TX coalescing.
- * @pkt_rate_low: Threshold for low packet rate (packets per second).
- * @rx_coalesce_usecs_low: How many usecs to delay an RX interrupt after
- *     a packet arrives, when the packet rate is below @pkt_rate_low.
- * @rx_max_coalesced_frames_low: Maximum number of packets to be received
- *     before an RX interrupt, when the packet rate is below @pkt_rate_low.
- * @tx_coalesce_usecs_low: How many usecs to delay a TX interrupt after
- *     a packet is sent, when the packet rate is below @pkt_rate_low.
- * @tx_max_coalesced_frames_low: Maximum nuumber of packets to be sent before
- *     a TX interrupt, when the packet rate is below @pkt_rate_low.
- * @pkt_rate_high: Threshold for high packet rate (packets per second).
- * @rx_coalesce_usecs_high: How many usecs to delay an RX interrupt after
- *     a packet arrives, when the packet rate is above @pkt_rate_high.
- * @rx_max_coalesced_frames_high: Maximum number of packets to be received
- *     before an RX interrupt, when the packet rate is above @pkt_rate_high.
- * @tx_coalesce_usecs_high: How many usecs to delay a TX interrupt after
- *     a packet is sent, when the packet rate is above @pkt_rate_high.
- * @tx_max_coalesced_frames_high: Maximum number of packets to be sent before
- *     a TX interrupt, when the packet rate is above @pkt_rate_high.
- * @rate_sample_interval: How often to do adaptive coalescing packet rate
- *     sampling, measured in seconds.  Must not be zero.
- *
- * Each pair of (usecs, max_frames) fields specifies that interrupts
- * should be coalesced until
- *     (usecs > 0 && time_since_first_completion >= usecs) ||
- *     (max_frames > 0 && completed_frames >= max_frames)
- *
- * It is illegal to set both usecs and max_frames to zero as this
- * would cause interrupts to never be generated.  To disable
- * coalescing, set usecs = 0 and max_frames = 1.
- *
- * Some implementations ignore the value of max_frames and use the
- * condition time_since_first_completion >= usecs
- *
- * This is deprecated.  Drivers for hardware that does not support
- * counting completions should validate that max_frames == !rx_usecs.
- *
- * Adaptive RX/TX coalescing is an algorithm implemented by some
- * drivers to improve latency under low packet rates and improve
- * throughput under high packet rates.  Some drivers only implement
- * one of RX or TX adaptive coalescing.  Anything not implemented by
- * the driver causes these values to be silently ignored.
- *
- * When the packet rate is below @pkt_rate_high but above
- * @pkt_rate_low (both measured in packets per second) the
- * normal {rx,tx}_* coalescing parameters are used.
- */
-struct ethtool_coalesce {
-       __u32   cmd;
-       __u32   rx_coalesce_usecs;
-       __u32   rx_max_coalesced_frames;
-       __u32   rx_coalesce_usecs_irq;
-       __u32   rx_max_coalesced_frames_irq;
-       __u32   tx_coalesce_usecs;
-       __u32   tx_max_coalesced_frames;
-       __u32   tx_coalesce_usecs_irq;
-       __u32   tx_max_coalesced_frames_irq;
-       __u32   stats_block_coalesce_usecs;
-       __u32   use_adaptive_rx_coalesce;
-       __u32   use_adaptive_tx_coalesce;
-       __u32   pkt_rate_low;
-       __u32   rx_coalesce_usecs_low;
-       __u32   rx_max_coalesced_frames_low;
-       __u32   tx_coalesce_usecs_low;
-       __u32   tx_max_coalesced_frames_low;
-       __u32   pkt_rate_high;
-       __u32   rx_coalesce_usecs_high;
-       __u32   rx_max_coalesced_frames_high;
-       __u32   tx_coalesce_usecs_high;
-       __u32   tx_max_coalesced_frames_high;
-       __u32   rate_sample_interval;
-};
-
-/**
- * struct ethtool_ringparam - RX/TX ring parameters
- * @cmd: Command number = %ETHTOOL_GRINGPARAM or %ETHTOOL_SRINGPARAM
- * @rx_max_pending: Maximum supported number of pending entries per
- *     RX ring.  Read-only.
- * @rx_mini_max_pending: Maximum supported number of pending entries
- *     per RX mini ring.  Read-only.
- * @rx_jumbo_max_pending: Maximum supported number of pending entries
- *     per RX jumbo ring.  Read-only.
- * @tx_max_pending: Maximum supported number of pending entries per
- *     TX ring.  Read-only.
- * @rx_pending: Current maximum number of pending entries per RX ring
- * @rx_mini_pending: Current maximum number of pending entries per RX
- *     mini ring
- * @rx_jumbo_pending: Current maximum number of pending entries per RX
- *     jumbo ring
- * @tx_pending: Current maximum supported number of pending entries
- *     per TX ring
- *
- * If the interface does not have separate RX mini and/or jumbo rings,
- * @rx_mini_max_pending and/or @rx_jumbo_max_pending will be 0.
- *
- * There may also be driver-dependent minimum values for the number
- * of entries per ring.
- */
-struct ethtool_ringparam {
-       __u32   cmd;
-       __u32   rx_max_pending;
-       __u32   rx_mini_max_pending;
-       __u32   rx_jumbo_max_pending;
-       __u32   tx_max_pending;
-       __u32   rx_pending;
-       __u32   rx_mini_pending;
-       __u32   rx_jumbo_pending;
-       __u32   tx_pending;
-};
-
-/**
- * struct ethtool_channels - configuring number of network channel
- * @cmd: ETHTOOL_{G,S}CHANNELS
- * @max_rx: Read only. Maximum number of receive channel the driver support.
- * @max_tx: Read only. Maximum number of transmit channel the driver support.
- * @max_other: Read only. Maximum number of other channel the driver support.
- * @max_combined: Read only. Maximum number of combined channel the driver
- *     support. Set of queues RX, TX or other.
- * @rx_count: Valid values are in the range 1 to the max_rx.
- * @tx_count: Valid values are in the range 1 to the max_tx.
- * @other_count: Valid values are in the range 1 to the max_other.
- * @combined_count: Valid values are in the range 1 to the max_combined.
- *
- * This can be used to configure RX, TX and other channels.
- */
-
-struct ethtool_channels {
-       __u32   cmd;
-       __u32   max_rx;
-       __u32   max_tx;
-       __u32   max_other;
-       __u32   max_combined;
-       __u32   rx_count;
-       __u32   tx_count;
-       __u32   other_count;
-       __u32   combined_count;
-};
-
-/**
- * struct ethtool_pauseparam - Ethernet pause (flow control) parameters
- * @cmd: Command number = %ETHTOOL_GPAUSEPARAM or %ETHTOOL_SPAUSEPARAM
- * @autoneg: Flag to enable autonegotiation of pause frame use
- * @rx_pause: Flag to enable reception of pause frames
- * @tx_pause: Flag to enable transmission of pause frames
- *
- * Drivers should reject a non-zero setting of @autoneg when
- * autoneogotiation is disabled (or not supported) for the link.
- *
- * If the link is autonegotiated, drivers should use
- * mii_advertise_flowctrl() or similar code to set the advertised
- * pause frame capabilities based on the @rx_pause and @tx_pause flags,
- * even if @autoneg is zero.  They should also allow the advertised
- * pause frame capabilities to be controlled directly through the
- * advertising field of &struct ethtool_cmd.
- *
- * If @autoneg is non-zero, the MAC is configured to send and/or
- * receive pause frames according to the result of autonegotiation.
- * Otherwise, it is configured directly based on the @rx_pause and
- * @tx_pause flags.
- */
-struct ethtool_pauseparam {
-       __u32   cmd;
-       __u32   autoneg;
-       __u32   rx_pause;
-       __u32   tx_pause;
-};
-
-#define ETH_GSTRING_LEN                32
-
-/**
- * enum ethtool_stringset - string set ID
- * @ETH_SS_TEST: Self-test result names, for use with %ETHTOOL_TEST
- * @ETH_SS_STATS: Statistic names, for use with %ETHTOOL_GSTATS
- * @ETH_SS_PRIV_FLAGS: Driver private flag names, for use with
- *     %ETHTOOL_GPFLAGS and %ETHTOOL_SPFLAGS
- * @ETH_SS_NTUPLE_FILTERS: Previously used with %ETHTOOL_GRXNTUPLE;
- *     now deprecated
- * @ETH_SS_FEATURES: Device feature names
- * @ETH_SS_RSS_HASH_FUNCS: RSS hush function names
- * @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS
- * @ETH_SS_PHY_TUNABLES: PHY tunable names
- */
-enum ethtool_stringset {
-       ETH_SS_TEST             = 0,
-       ETH_SS_STATS,
-       ETH_SS_PRIV_FLAGS,
-       ETH_SS_NTUPLE_FILTERS,
-       ETH_SS_FEATURES,
-       ETH_SS_RSS_HASH_FUNCS,
-       ETH_SS_TUNABLES,
-       ETH_SS_PHY_STATS,
-       ETH_SS_PHY_TUNABLES,
-};
-
-/**
- * struct ethtool_gstrings - string set for data tagging
- * @cmd: Command number = %ETHTOOL_GSTRINGS
- * @string_set: String set ID; one of &enum ethtool_stringset
- * @len: On return, the number of strings in the string set
- * @data: Buffer for strings.  Each string is null-padded to a size of
- *     %ETH_GSTRING_LEN.
- *
- * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in
- * the string set.  They must allocate a buffer of the appropriate
- * size immediately following this structure.
- */
-struct ethtool_gstrings {
-       __u32   cmd;
-       __u32   string_set;
-       __u32   len;
-       __u8    data[0];
-};
-
-/**
- * struct ethtool_sset_info - string set information
- * @cmd: Command number = %ETHTOOL_GSSET_INFO
- * @sset_mask: On entry, a bitmask of string sets to query, with bits
- *     numbered according to &enum ethtool_stringset.  On return, a
- *     bitmask of those string sets queried that are supported.
- * @data: Buffer for string set sizes.  On return, this contains the
- *     size of each string set that was queried and supported, in
- *     order of ID.
- *
- * Example: The user passes in @sset_mask = 0x7 (sets 0, 1, 2) and on
- * return @sset_mask == 0x6 (sets 1, 2).  Then @data[0] contains the
- * size of set 1 and @data[1] contains the size of set 2.
- *
- * Users must allocate a buffer of the appropriate size (4 * number of
- * sets queried) immediately following this structure.
- */
-struct ethtool_sset_info {
-       __u32   cmd;
-       __u32   reserved;
-       __u64   sset_mask;
-       __u32   data[0];
-};
-
-/**
- * enum ethtool_test_flags - flags definition of ethtool_test
- * @ETH_TEST_FL_OFFLINE: if set perform online and offline tests, otherwise
- *     only online tests.
- * @ETH_TEST_FL_FAILED: Driver set this flag if test fails.
- * @ETH_TEST_FL_EXTERNAL_LB: Application request to perform external loopback
- *     test.
- * @ETH_TEST_FL_EXTERNAL_LB_DONE: Driver performed the external loopback test
- */
-
-enum ethtool_test_flags {
-       ETH_TEST_FL_OFFLINE     = (1 << 0),
-       ETH_TEST_FL_FAILED      = (1 << 1),
-       ETH_TEST_FL_EXTERNAL_LB = (1 << 2),
-       ETH_TEST_FL_EXTERNAL_LB_DONE    = (1 << 3),
-};
-
-/**
- * struct ethtool_test - device self-test invocation
- * @cmd: Command number = %ETHTOOL_TEST
- * @flags: A bitmask of flags from &enum ethtool_test_flags.  Some
- *     flags may be set by the user on entry; others may be set by
- *     the driver on return.
- * @len: On return, the number of test results
- * @data: Array of test results
- *
- * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the
- * number of test results that will be returned.  They must allocate a
- * buffer of the appropriate size (8 * number of results) immediately
- * following this structure.
- */
-struct ethtool_test {
-       __u32   cmd;
-       __u32   flags;
-       __u32   reserved;
-       __u32   len;
-       __u64   data[0];
-};
-
-/**
- * struct ethtool_stats - device-specific statistics
- * @cmd: Command number = %ETHTOOL_GSTATS
- * @n_stats: On return, the number of statistics
- * @data: Array of statistics
- *
- * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the
- * number of statistics that will be returned.  They must allocate a
- * buffer of the appropriate size (8 * number of statistics)
- * immediately following this structure.
- */
-struct ethtool_stats {
-       __u32   cmd;
-       __u32   n_stats;
-       __u64   data[0];
-};
-
-/**
- * struct ethtool_perm_addr - permanent hardware address
- * @cmd: Command number = %ETHTOOL_GPERMADDR
- * @size: On entry, the size of the buffer.  On return, the size of the
- *     address.  The command fails if the buffer is too small.
- * @data: Buffer for the address
- *
- * Users must allocate the buffer immediately following this structure.
- * A buffer size of %MAX_ADDR_LEN should be sufficient for any address
- * type.
- */
-struct ethtool_perm_addr {
-       __u32   cmd;
-       __u32   size;
-       __u8    data[0];
-};
-
-/* boolean flags controlling per-interface behavior characteristics.
- * When reading, the flag indicates whether or not a certain behavior
- * is enabled/present.  When writing, the flag indicates whether
- * or not the driver should turn on (set) or off (clear) a behavior.
- *
- * Some behaviors may read-only (unconditionally absent or present).
- * If such is the case, return EINVAL in the set-flags operation if the
- * flag differs from the read-only value.
- */
-enum ethtool_flags {
-       ETH_FLAG_TXVLAN         = (1 << 7),     /* TX VLAN offload enabled */
-       ETH_FLAG_RXVLAN         = (1 << 8),     /* RX VLAN offload enabled */
-       ETH_FLAG_LRO            = (1 << 15),    /* LRO is enabled */
-       ETH_FLAG_NTUPLE         = (1 << 27),    /* N-tuple filters enabled */
-       ETH_FLAG_RXHASH         = (1 << 28),
-};
-
-/* The following structures are for supporting RX network flow
- * classification and RX n-tuple configuration. Note, all multibyte
- * fields, e.g., ip4src, ip4dst, psrc, pdst, spi, etc. are expected to
- * be in network byte order.
- */
-
-/**
- * struct ethtool_tcpip4_spec - flow specification for TCP/IPv4 etc.
- * @ip4src: Source host
- * @ip4dst: Destination host
- * @psrc: Source port
- * @pdst: Destination port
- * @tos: Type-of-service
- *
- * This can be used to specify a TCP/IPv4, UDP/IPv4 or SCTP/IPv4 flow.
- */
-struct ethtool_tcpip4_spec {
-       __be32  ip4src;
-       __be32  ip4dst;
-       __be16  psrc;
-       __be16  pdst;
-       __u8    tos;
-};
-
-/**
- * struct ethtool_ah_espip4_spec - flow specification for IPsec/IPv4
- * @ip4src: Source host
- * @ip4dst: Destination host
- * @spi: Security parameters index
- * @tos: Type-of-service
- *
- * This can be used to specify an IPsec transport or tunnel over IPv4.
- */
-struct ethtool_ah_espip4_spec {
-       __be32  ip4src;
-       __be32  ip4dst;
-       __be32  spi;
-       __u8    tos;
-};
-
-#define        ETH_RX_NFC_IP4  1
-
-/**
- * struct ethtool_usrip4_spec - general flow specification for IPv4
- * @ip4src: Source host
- * @ip4dst: Destination host
- * @l4_4_bytes: First 4 bytes of transport (layer 4) header
- * @tos: Type-of-service
- * @ip_ver: Value must be %ETH_RX_NFC_IP4; mask must be 0
- * @proto: Transport protocol number; mask must be 0
- */
-struct ethtool_usrip4_spec {
-       __be32  ip4src;
-       __be32  ip4dst;
-       __be32  l4_4_bytes;
-       __u8    tos;
-       __u8    ip_ver;
-       __u8    proto;
-};
-
-/**
- * struct ethtool_tcpip6_spec - flow specification for TCP/IPv6 etc.
- * @ip6src: Source host
- * @ip6dst: Destination host
- * @psrc: Source port
- * @pdst: Destination port
- * @tclass: Traffic Class
- *
- * This can be used to specify a TCP/IPv6, UDP/IPv6 or SCTP/IPv6 flow.
- */
-struct ethtool_tcpip6_spec {
-       __be32  ip6src[4];
-       __be32  ip6dst[4];
-       __be16  psrc;
-       __be16  pdst;
-       __u8    tclass;
-};
-
-/**
- * struct ethtool_ah_espip6_spec - flow specification for IPsec/IPv6
- * @ip6src: Source host
- * @ip6dst: Destination host
- * @spi: Security parameters index
- * @tclass: Traffic Class
- *
- * This can be used to specify an IPsec transport or tunnel over IPv6.
- */
-struct ethtool_ah_espip6_spec {
-       __be32  ip6src[4];
-       __be32  ip6dst[4];
-       __be32  spi;
-       __u8    tclass;
-};
-
-/**
- * struct ethtool_usrip6_spec - general flow specification for IPv6
- * @ip6src: Source host
- * @ip6dst: Destination host
- * @l4_4_bytes: First 4 bytes of transport (layer 4) header
- * @tclass: Traffic Class
- * @l4_proto: Transport protocol number (nexthdr after any Extension Headers)
- */
-struct ethtool_usrip6_spec {
-       __be32  ip6src[4];
-       __be32  ip6dst[4];
-       __be32  l4_4_bytes;
-       __u8    tclass;
-       __u8    l4_proto;
-};
-
-union ethtool_flow_union {
-       struct ethtool_tcpip4_spec              tcp_ip4_spec;
-       struct ethtool_tcpip4_spec              udp_ip4_spec;
-       struct ethtool_tcpip4_spec              sctp_ip4_spec;
-       struct ethtool_ah_espip4_spec           ah_ip4_spec;
-       struct ethtool_ah_espip4_spec           esp_ip4_spec;
-       struct ethtool_usrip4_spec              usr_ip4_spec;
-       struct ethtool_tcpip6_spec              tcp_ip6_spec;
-       struct ethtool_tcpip6_spec              udp_ip6_spec;
-       struct ethtool_tcpip6_spec              sctp_ip6_spec;
-       struct ethtool_ah_espip6_spec           ah_ip6_spec;
-       struct ethtool_ah_espip6_spec           esp_ip6_spec;
-       struct ethtool_usrip6_spec              usr_ip6_spec;
-       struct ethhdr                           ether_spec;
-       __u8                                    hdata[52];
-};
-
-/**
- * struct ethtool_flow_ext - additional RX flow fields
- * @h_dest: destination MAC address
- * @vlan_etype: VLAN EtherType
- * @vlan_tci: VLAN tag control information
- * @data: user defined data
- *
- * Note, @vlan_etype, @vlan_tci, and @data are only valid if %FLOW_EXT
- * is set in &struct ethtool_rx_flow_spec @flow_type.
- * @h_dest is valid if %FLOW_MAC_EXT is set.
- */
-struct ethtool_flow_ext {
-       __u8            padding[2];
-       unsigned char   h_dest[ETH_ALEN];
-       __be16          vlan_etype;
-       __be16          vlan_tci;
-       __be32          data[2];
-};
-
-/**
- * struct ethtool_rx_flow_spec - classification rule for RX flows
- * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
- * @h_u: Flow fields to match (dependent on @flow_type)
- * @h_ext: Additional fields to match
- * @m_u: Masks for flow field bits to be matched
- * @m_ext: Masks for additional field bits to be matched
- *     Note, all additional fields must be ignored unless @flow_type
- *     includes the %FLOW_EXT or %FLOW_MAC_EXT flag
- *     (see &struct ethtool_flow_ext description).
- * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
- *     if packets should be discarded, or %RX_CLS_FLOW_WAKE if the
- *     packets should be used for Wake-on-LAN with %WAKE_FILTER
- * @location: Location of rule in the table.  Locations must be
- *     numbered such that a flow matching multiple rules will be
- *     classified according to the first (lowest numbered) rule.
- */
-struct ethtool_rx_flow_spec {
-       __u32           flow_type;
-       union ethtool_flow_union h_u;
-       struct ethtool_flow_ext h_ext;
-       union ethtool_flow_union m_u;
-       struct ethtool_flow_ext m_ext;
-       __u64           ring_cookie;
-       __u32           location;
-};
-
-/* How rings are layed out when accessing virtual functions or
- * offloaded queues is device specific. To allow users to do flow
- * steering and specify these queues the ring cookie is partitioned
- * into a 32bit queue index with an 8 bit virtual function id.
- * This also leaves the 3bytes for further specifiers. It is possible
- * future devices may support more than 256 virtual functions if
- * devices start supporting PCIe w/ARI. However at the moment I
- * do not know of any devices that support this so I do not reserve
- * space for this at this time. If a future patch consumes the next
- * byte it should be aware of this possiblity.
- */
-#define ETHTOOL_RX_FLOW_SPEC_RING      0x00000000FFFFFFFFLL
-#define ETHTOOL_RX_FLOW_SPEC_RING_VF   0x000000FF00000000LL
-#define ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF 32
-static __inline__ __u64 ethtool_get_flow_spec_ring(__u64 ring_cookie)
-{
-       return ETHTOOL_RX_FLOW_SPEC_RING & ring_cookie;
-}
-
-static __inline__ __u64 ethtool_get_flow_spec_ring_vf(__u64 ring_cookie)
-{
-       return (ETHTOOL_RX_FLOW_SPEC_RING_VF & ring_cookie) >>
-                               ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF;
-}
-
-/**
- * struct ethtool_rxnfc - command to get or set RX flow classification rules
- * @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH,
- *     %ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE,
- *     %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS
- * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW
- * @data: Command-dependent value
- * @fs: Flow classification rule
- * @rss_context: RSS context to be affected
- * @rule_cnt: Number of rules to be affected
- * @rule_locs: Array of used rule locations
- *
- * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
- * the fields included in the flow hash, e.g. %RXH_IP_SRC.  The following
- * structure fields must not be used, except that if @flow_type includes
- * the %FLOW_RSS flag, then @rss_context determines which RSS context to
- * act on.
- *
- * For %ETHTOOL_GRXRINGS, @data is set to the number of RX rings/queues
- * on return.
- *
- * For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined
- * rules on return.  If @data is non-zero on return then it is the
- * size of the rule table, plus the flag %RX_CLS_LOC_SPECIAL if the
- * driver supports any special location values.  If that flag is not
- * set in @data then special location values should not be used.
- *
- * For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the location of an
- * existing rule on entry and @fs contains the rule on return; if
- * @fs.@flow_type includes the %FLOW_RSS flag, then @rss_context is
- * filled with the RSS context ID associated with the rule.
- *
- * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
- * user buffer for @rule_locs on entry.  On return, @data is the size
- * of the rule table, @rule_cnt is the number of defined rules, and
- * @rule_locs contains the locations of the defined rules.  Drivers
- * must use the second parameter to get_rxnfc() instead of @rule_locs.
- *
- * For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update.
- * @fs.@location either specifies the location to use or is a special
- * location value with %RX_CLS_LOC_SPECIAL flag set.  On return,
- * @fs.@location is the actual rule location.  If @fs.@flow_type
- * includes the %FLOW_RSS flag, @rss_context is the RSS context ID to
- * use for flow spreading traffic which matches this rule.  The value
- * from the rxfh indirection table will be added to @fs.@ring_cookie
- * to choose which ring to deliver to.
- *
- * For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the location of an
- * existing rule on entry.
- *
- * A driver supporting the special location values for
- * %ETHTOOL_SRXCLSRLINS may add the rule at any suitable unused
- * location, and may remove a rule at a later location (lower
- * priority) that matches exactly the same set of flows.  The special
- * values are %RX_CLS_LOC_ANY, selecting any location;
- * %RX_CLS_LOC_FIRST, selecting the first suitable location (maximum
- * priority); and %RX_CLS_LOC_LAST, selecting the last suitable
- * location (minimum priority).  Additional special values may be
- * defined in future and drivers must return -%EINVAL for any
- * unrecognised value.
- */
-struct ethtool_rxnfc {
-       __u32                           cmd;
-       __u32                           flow_type;
-       __u64                           data;
-       struct ethtool_rx_flow_spec     fs;
-       union {
-               __u32                   rule_cnt;
-               __u32                   rss_context;
-       };
-       __u32                           rule_locs[0];
-};
-
-
-/**
- * struct ethtool_rxfh_indir - command to get or set RX flow hash indirection
- * @cmd: Specific command number - %ETHTOOL_GRXFHINDIR or %ETHTOOL_SRXFHINDIR
- * @size: On entry, the array size of the user buffer, which may be zero.
- *     On return from %ETHTOOL_GRXFHINDIR, the array size of the hardware
- *     indirection table.
- * @ring_index: RX ring/queue index for each hash value
- *
- * For %ETHTOOL_GRXFHINDIR, a @size of zero means that only the size
- * should be returned.  For %ETHTOOL_SRXFHINDIR, a @size of zero means
- * the table should be reset to default values.  This last feature
- * is not supported by the original implementations.
- */
-struct ethtool_rxfh_indir {
-       __u32   cmd;
-       __u32   size;
-       __u32   ring_index[0];
-};
-
-/**
- * struct ethtool_rxfh - command to get/set RX flow hash indir or/and hash key.
- * @cmd: Specific command number - %ETHTOOL_GRSSH or %ETHTOOL_SRSSH
- * @rss_context: RSS context identifier.  Context 0 is the default for normal
- *     traffic; other contexts can be referenced as the destination for RX flow
- *     classification rules.  %ETH_RXFH_CONTEXT_ALLOC is used with command
- *     %ETHTOOL_SRSSH to allocate a new RSS context; on return this field will
- *     contain the ID of the newly allocated context.
- * @indir_size: On entry, the array size of the user buffer for the
- *     indirection table, which may be zero, or (for %ETHTOOL_SRSSH),
- *     %ETH_RXFH_INDIR_NO_CHANGE.  On return from %ETHTOOL_GRSSH,
- *     the array size of the hardware indirection table.
- * @key_size: On entry, the array size of the user buffer for the hash key,
- *     which may be zero.  On return from %ETHTOOL_GRSSH, the size of the
- *     hardware hash key.
- * @hfunc: Defines the current RSS hash function used by HW (or to be set to).
- *     Valid values are one of the %ETH_RSS_HASH_*.
- * @rsvd:      Reserved for future extensions.
- * @rss_config: RX ring/queue index for each hash value i.e., indirection table
- *     of @indir_size __u32 elements, followed by hash key of @key_size
- *     bytes.
- *
- * For %ETHTOOL_GRSSH, a @indir_size and key_size of zero means that only the
- * size should be returned.  For %ETHTOOL_SRSSH, an @indir_size of
- * %ETH_RXFH_INDIR_NO_CHANGE means that indir table setting is not requested
- * and a @indir_size of zero means the indir table should be reset to default
- * values (if @rss_context == 0) or that the RSS context should be deleted.
- * An hfunc of zero means that hash function setting is not requested.
- */
-struct ethtool_rxfh {
-       __u32   cmd;
-       __u32   rss_context;
-       __u32   indir_size;
-       __u32   key_size;
-       __u8    hfunc;
-       __u8    rsvd8[3];
-       __u32   rsvd32;
-       __u32   rss_config[0];
-};
-#define ETH_RXFH_CONTEXT_ALLOC         0xffffffff
-#define ETH_RXFH_INDIR_NO_CHANGE       0xffffffff
-
-/**
- * struct ethtool_rx_ntuple_flow_spec - specification for RX flow filter
- * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
- * @h_u: Flow field values to match (dependent on @flow_type)
- * @m_u: Masks for flow field value bits to be ignored
- * @vlan_tag: VLAN tag to match
- * @vlan_tag_mask: Mask for VLAN tag bits to be ignored
- * @data: Driver-dependent data to match
- * @data_mask: Mask for driver-dependent data bits to be ignored
- * @action: RX ring/queue index to deliver to (non-negative) or other action
- *     (negative, e.g. %ETHTOOL_RXNTUPLE_ACTION_DROP)
- *
- * For flow types %TCP_V4_FLOW, %UDP_V4_FLOW and %SCTP_V4_FLOW, where
- * a field value and mask are both zero this is treated as if all mask
- * bits are set i.e. the field is ignored.
- */
-struct ethtool_rx_ntuple_flow_spec {
-       __u32            flow_type;
-       union {
-               struct ethtool_tcpip4_spec              tcp_ip4_spec;
-               struct ethtool_tcpip4_spec              udp_ip4_spec;
-               struct ethtool_tcpip4_spec              sctp_ip4_spec;
-               struct ethtool_ah_espip4_spec           ah_ip4_spec;
-               struct ethtool_ah_espip4_spec           esp_ip4_spec;
-               struct ethtool_usrip4_spec              usr_ip4_spec;
-               struct ethhdr                           ether_spec;
-               __u8                                    hdata[72];
-       } h_u, m_u;
-
-       __u16           vlan_tag;
-       __u16           vlan_tag_mask;
-       __u64           data;
-       __u64           data_mask;
-
-       __s32           action;
-#define ETHTOOL_RXNTUPLE_ACTION_DROP   (-1)    /* drop packet */
-#define ETHTOOL_RXNTUPLE_ACTION_CLEAR  (-2)    /* clear filter */
-};
-
-/**
- * struct ethtool_rx_ntuple - command to set or clear RX flow filter
- * @cmd: Command number - %ETHTOOL_SRXNTUPLE
- * @fs: Flow filter specification
- */
-struct ethtool_rx_ntuple {
-       __u32                                   cmd;
-       struct ethtool_rx_ntuple_flow_spec      fs;
-};
-
-#define ETHTOOL_FLASH_MAX_FILENAME     128
-enum ethtool_flash_op_type {
-       ETHTOOL_FLASH_ALL_REGIONS       = 0,
-};
-
-/* for passing firmware flashing related parameters */
-struct ethtool_flash {
-       __u32   cmd;
-       __u32   region;
-       char    data[ETHTOOL_FLASH_MAX_FILENAME];
-};
-
-/**
- * struct ethtool_dump - used for retrieving, setting device dump
- * @cmd: Command number - %ETHTOOL_GET_DUMP_FLAG, %ETHTOOL_GET_DUMP_DATA, or
- *     %ETHTOOL_SET_DUMP
- * @version: FW version of the dump, filled in by driver
- * @flag: driver dependent flag for dump setting, filled in by driver during
- *        get and filled in by ethtool for set operation.
- *        flag must be initialized by macro ETH_FW_DUMP_DISABLE value when
- *        firmware dump is disabled.
- * @len: length of dump data, used as the length of the user buffer on entry to
- *      %ETHTOOL_GET_DUMP_DATA and this is returned as dump length by driver
- *      for %ETHTOOL_GET_DUMP_FLAG command
- * @data: data collected for get dump data operation
- */
-struct ethtool_dump {
-       __u32   cmd;
-       __u32   version;
-       __u32   flag;
-       __u32   len;
-       __u8    data[0];
-};
-
-#define ETH_FW_DUMP_DISABLE 0
-
-/* for returning and changing feature sets */
-
-/**
- * struct ethtool_get_features_block - block with state of 32 features
- * @available: mask of changeable features
- * @requested: mask of features requested to be enabled if possible
- * @active: mask of currently enabled features
- * @never_changed: mask of features not changeable for any device
- */
-struct ethtool_get_features_block {
-       __u32   available;
-       __u32   requested;
-       __u32   active;
-       __u32   never_changed;
-};
-
-/**
- * struct ethtool_gfeatures - command to get state of device's features
- * @cmd: command number = %ETHTOOL_GFEATURES
- * @size: On entry, the number of elements in the features[] array;
- *     on return, the number of elements in features[] needed to hold
- *     all features
- * @features: state of features
- */
-struct ethtool_gfeatures {
-       __u32   cmd;
-       __u32   size;
-       struct ethtool_get_features_block features[0];
-};
-
-/**
- * struct ethtool_set_features_block - block with request for 32 features
- * @valid: mask of features to be changed
- * @requested: values of features to be changed
- */
-struct ethtool_set_features_block {
-       __u32   valid;
-       __u32   requested;
-};
-
-/**
- * struct ethtool_sfeatures - command to request change in device's features
- * @cmd: command number = %ETHTOOL_SFEATURES
- * @size: array size of the features[] array
- * @features: feature change masks
- */
-struct ethtool_sfeatures {
-       __u32   cmd;
-       __u32   size;
-       struct ethtool_set_features_block features[0];
-};
-
-/**
- * struct ethtool_ts_info - holds a device's timestamping and PHC association
- * @cmd: command number = %ETHTOOL_GET_TS_INFO
- * @so_timestamping: bit mask of the sum of the supported SO_TIMESTAMPING flags
- * @phc_index: device index of the associated PHC, or -1 if there is none
- * @tx_types: bit mask of the supported hwtstamp_tx_types enumeration values
- * @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values
- *
- * The bits in the 'tx_types' and 'rx_filters' fields correspond to
- * the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values,
- * respectively.  For example, if the device supports HWTSTAMP_TX_ON,
- * then (1 << HWTSTAMP_TX_ON) in 'tx_types' will be set.
- *
- * Drivers should only report the filters they actually support without
- * upscaling in the SIOCSHWTSTAMP ioctl. If the SIOCSHWSTAMP request for
- * HWTSTAMP_FILTER_V1_SYNC is supported by HWTSTAMP_FILTER_V1_EVENT, then the
- * driver should only report HWTSTAMP_FILTER_V1_EVENT in this op.
- */
-struct ethtool_ts_info {
-       __u32   cmd;
-       __u32   so_timestamping;
-       __s32   phc_index;
-       __u32   tx_types;
-       __u32   tx_reserved[3];
-       __u32   rx_filters;
-       __u32   rx_reserved[3];
-};
-
-/*
- * %ETHTOOL_SFEATURES changes features present in features[].valid to the
- * values of corresponding bits in features[].requested. Bits in .requested
- * not set in .valid or not changeable are ignored.
- *
- * Returns %EINVAL when .valid contains undefined or never-changeable bits
- * or size is not equal to required number of features words (32-bit blocks).
- * Returns >= 0 if request was completed; bits set in the value mean:
- *   %ETHTOOL_F_UNSUPPORTED - there were bits set in .valid that are not
- *     changeable (not present in %ETHTOOL_GFEATURES' features[].available)
- *     those bits were ignored.
- *   %ETHTOOL_F_WISH - some or all changes requested were recorded but the
- *      resulting state of bits masked by .valid is not equal to .requested.
- *      Probably there are other device-specific constraints on some features
- *      in the set. When %ETHTOOL_F_UNSUPPORTED is set, .valid is considered
- *      here as though ignored bits were cleared.
- *   %ETHTOOL_F_COMPAT - some or all changes requested were made by calling
- *      compatibility functions. Requested offload state cannot be properly
- *      managed by kernel.
- *
- * Meaning of bits in the masks are obtained by %ETHTOOL_GSSET_INFO (number of
- * bits in the arrays - always multiple of 32) and %ETHTOOL_GSTRINGS commands
- * for ETH_SS_FEATURES string set. First entry in the table corresponds to least
- * significant bit in features[0] fields. Empty strings mark undefined features.
- */
-enum ethtool_sfeatures_retval_bits {
-       ETHTOOL_F_UNSUPPORTED__BIT,
-       ETHTOOL_F_WISH__BIT,
-       ETHTOOL_F_COMPAT__BIT,
-};
-
-#define ETHTOOL_F_UNSUPPORTED   (1 << ETHTOOL_F_UNSUPPORTED__BIT)
-#define ETHTOOL_F_WISH          (1 << ETHTOOL_F_WISH__BIT)
-#define ETHTOOL_F_COMPAT        (1 << ETHTOOL_F_COMPAT__BIT)
-
-#define MAX_NUM_QUEUE          4096
-
-/**
- * struct ethtool_per_queue_op - apply sub command to the queues in mask.
- * @cmd: ETHTOOL_PERQUEUE
- * @sub_command: the sub command which apply to each queues
- * @queue_mask: Bitmap of the queues which sub command apply to
- * @data: A complete command structure following for each of the queues addressed
- */
-struct ethtool_per_queue_op {
-       __u32   cmd;
-       __u32   sub_command;
-       __u32   queue_mask[__KERNEL_DIV_ROUND_UP(MAX_NUM_QUEUE, 32)];
-       char    data[];
-};
-
-/**
- * struct ethtool_fecparam - Ethernet forward error correction(fec) parameters
- * @cmd: Command number = %ETHTOOL_GFECPARAM or %ETHTOOL_SFECPARAM
- * @active_fec: FEC mode which is active on porte
- * @fec: Bitmask of supported/configured FEC modes
- * @rsvd: Reserved for future extensions. i.e FEC bypass feature.
- *
- * Drivers should reject a non-zero setting of @autoneg when
- * autoneogotiation is disabled (or not supported) for the link.
- *
- */
-struct ethtool_fecparam {
-       __u32   cmd;
-       /* bitmask of FEC modes */
-       __u32   active_fec;
-       __u32   fec;
-       __u32   reserved;
-};
-
-/**
- * enum ethtool_fec_config_bits - flags definition of ethtool_fec_configuration
- * @ETHTOOL_FEC_NONE: FEC mode configuration is not supported
- * @ETHTOOL_FEC_AUTO: Default/Best FEC mode provided by driver
- * @ETHTOOL_FEC_OFF: No FEC Mode
- * @ETHTOOL_FEC_RS: Reed-Solomon Forward Error Detection mode
- * @ETHTOOL_FEC_BASER: Base-R/Reed-Solomon Forward Error Detection mode
- */
-enum ethtool_fec_config_bits {
-       ETHTOOL_FEC_NONE_BIT,
-       ETHTOOL_FEC_AUTO_BIT,
-       ETHTOOL_FEC_OFF_BIT,
-       ETHTOOL_FEC_RS_BIT,
-       ETHTOOL_FEC_BASER_BIT,
-};
-
-#define ETHTOOL_FEC_NONE               (1 << ETHTOOL_FEC_NONE_BIT)
-#define ETHTOOL_FEC_AUTO               (1 << ETHTOOL_FEC_AUTO_BIT)
-#define ETHTOOL_FEC_OFF                        (1 << ETHTOOL_FEC_OFF_BIT)
-#define ETHTOOL_FEC_RS                 (1 << ETHTOOL_FEC_RS_BIT)
-#define ETHTOOL_FEC_BASER              (1 << ETHTOOL_FEC_BASER_BIT)
-
-/* CMDs currently supported */
-#define ETHTOOL_GSET           0x00000001 /* DEPRECATED, Get settings.
-                                           * Please use ETHTOOL_GLINKSETTINGS
-                                           */
-#define ETHTOOL_SSET           0x00000002 /* DEPRECATED, Set settings.
-                                           * Please use ETHTOOL_SLINKSETTINGS
-                                           */
-#define ETHTOOL_GDRVINFO       0x00000003 /* Get driver info. */
-#define ETHTOOL_GREGS          0x00000004 /* Get NIC registers. */
-#define ETHTOOL_GWOL           0x00000005 /* Get wake-on-lan options. */
-#define ETHTOOL_SWOL           0x00000006 /* Set wake-on-lan options. */
-#define ETHTOOL_GMSGLVL                0x00000007 /* Get driver message level */
-#define ETHTOOL_SMSGLVL                0x00000008 /* Set driver msg level. */
-#define ETHTOOL_NWAY_RST       0x00000009 /* Restart autonegotiation. */
-/* Get link status for host, i.e. whether the interface *and* the
- * physical port (if there is one) are up (ethtool_value). */
-#define ETHTOOL_GLINK          0x0000000a
-#define ETHTOOL_GEEPROM                0x0000000b /* Get EEPROM data */
-#define ETHTOOL_SEEPROM                0x0000000c /* Set EEPROM data. */
-#define ETHTOOL_GCOALESCE      0x0000000e /* Get coalesce config */
-#define ETHTOOL_SCOALESCE      0x0000000f /* Set coalesce config. */
-#define ETHTOOL_GRINGPARAM     0x00000010 /* Get ring parameters */
-#define ETHTOOL_SRINGPARAM     0x00000011 /* Set ring parameters. */
-#define ETHTOOL_GPAUSEPARAM    0x00000012 /* Get pause parameters */
-#define ETHTOOL_SPAUSEPARAM    0x00000013 /* Set pause parameters. */
-#define ETHTOOL_GRXCSUM                0x00000014 /* Get RX hw csum enable (ethtool_value) */
-#define ETHTOOL_SRXCSUM                0x00000015 /* Set RX hw csum enable (ethtool_value) */
-#define ETHTOOL_GTXCSUM                0x00000016 /* Get TX hw csum enable (ethtool_value) */
-#define ETHTOOL_STXCSUM                0x00000017 /* Set TX hw csum enable (ethtool_value) */
-#define ETHTOOL_GSG            0x00000018 /* Get scatter-gather enable
-                                           * (ethtool_value) */
-#define ETHTOOL_SSG            0x00000019 /* Set scatter-gather enable
-                                           * (ethtool_value). */
-#define ETHTOOL_TEST           0x0000001a /* execute NIC self-test. */
-#define ETHTOOL_GSTRINGS       0x0000001b /* get specified string set */
-#define ETHTOOL_PHYS_ID                0x0000001c /* identify the NIC */
-#define ETHTOOL_GSTATS         0x0000001d /* get NIC-specific statistics */
-#define ETHTOOL_GTSO           0x0000001e /* Get TSO enable (ethtool_value) */
-#define ETHTOOL_STSO           0x0000001f /* Set TSO enable (ethtool_value) */
-#define ETHTOOL_GPERMADDR      0x00000020 /* Get permanent hardware address */
-#define ETHTOOL_GUFO           0x00000021 /* Get UFO enable (ethtool_value) */
-#define ETHTOOL_SUFO           0x00000022 /* Set UFO enable (ethtool_value) */
-#define ETHTOOL_GGSO           0x00000023 /* Get GSO enable (ethtool_value) */
-#define ETHTOOL_SGSO           0x00000024 /* Set GSO enable (ethtool_value) */
-#define ETHTOOL_GFLAGS         0x00000025 /* Get flags bitmap(ethtool_value) */
-#define ETHTOOL_SFLAGS         0x00000026 /* Set flags bitmap(ethtool_value) */
-#define ETHTOOL_GPFLAGS                0x00000027 /* Get driver-private flags bitmap */
-#define ETHTOOL_SPFLAGS                0x00000028 /* Set driver-private flags bitmap */
-
-#define ETHTOOL_GRXFH          0x00000029 /* Get RX flow hash configuration */
-#define ETHTOOL_SRXFH          0x0000002a /* Set RX flow hash configuration */
-#define ETHTOOL_GGRO           0x0000002b /* Get GRO enable (ethtool_value) */
-#define ETHTOOL_SGRO           0x0000002c /* Set GRO enable (ethtool_value) */
-#define ETHTOOL_GRXRINGS       0x0000002d /* Get RX rings available for LB */
-#define ETHTOOL_GRXCLSRLCNT    0x0000002e /* Get RX class rule count */
-#define ETHTOOL_GRXCLSRULE     0x0000002f /* Get RX classification rule */
-#define ETHTOOL_GRXCLSRLALL    0x00000030 /* Get all RX classification rule */
-#define ETHTOOL_SRXCLSRLDEL    0x00000031 /* Delete RX classification rule */
-#define ETHTOOL_SRXCLSRLINS    0x00000032 /* Insert RX classification rule */
-#define ETHTOOL_FLASHDEV       0x00000033 /* Flash firmware to device */
-#define ETHTOOL_RESET          0x00000034 /* Reset hardware */
-#define ETHTOOL_SRXNTUPLE      0x00000035 /* Add an n-tuple filter to device */
-#define ETHTOOL_GRXNTUPLE      0x00000036 /* deprecated */
-#define ETHTOOL_GSSET_INFO     0x00000037 /* Get string set info */
-#define ETHTOOL_GRXFHINDIR     0x00000038 /* Get RX flow hash indir'n table */
-#define ETHTOOL_SRXFHINDIR     0x00000039 /* Set RX flow hash indir'n table */
-
-#define ETHTOOL_GFEATURES      0x0000003a /* Get device offload settings */
-#define ETHTOOL_SFEATURES      0x0000003b /* Change device offload settings */
-#define ETHTOOL_GCHANNELS      0x0000003c /* Get no of channels */
-#define ETHTOOL_SCHANNELS      0x0000003d /* Set no of channels */
-#define ETHTOOL_SET_DUMP       0x0000003e /* Set dump settings */
-#define ETHTOOL_GET_DUMP_FLAG  0x0000003f /* Get dump settings */
-#define ETHTOOL_GET_DUMP_DATA  0x00000040 /* Get dump data */
-#define ETHTOOL_GET_TS_INFO    0x00000041 /* Get time stamping and PHC info */
-#define ETHTOOL_GMODULEINFO    0x00000042 /* Get plug-in module information */
-#define ETHTOOL_GMODULEEEPROM  0x00000043 /* Get plug-in module eeprom */
-#define ETHTOOL_GEEE           0x00000044 /* Get EEE settings */
-#define ETHTOOL_SEEE           0x00000045 /* Set EEE settings */
-
-#define ETHTOOL_GRSSH          0x00000046 /* Get RX flow hash configuration */
-#define ETHTOOL_SRSSH          0x00000047 /* Set RX flow hash configuration */
-#define ETHTOOL_GTUNABLE       0x00000048 /* Get tunable configuration */
-#define ETHTOOL_STUNABLE       0x00000049 /* Set tunable configuration */
-#define ETHTOOL_GPHYSTATS      0x0000004a /* get PHY-specific statistics */
-
-#define ETHTOOL_PERQUEUE       0x0000004b /* Set per queue options */
-
-#define ETHTOOL_GLINKSETTINGS  0x0000004c /* Get ethtool_link_settings */
-#define ETHTOOL_SLINKSETTINGS  0x0000004d /* Set ethtool_link_settings */
-#define ETHTOOL_PHY_GTUNABLE   0x0000004e /* Get PHY tunable configuration */
-#define ETHTOOL_PHY_STUNABLE   0x0000004f /* Set PHY tunable configuration */
-#define ETHTOOL_GFECPARAM      0x00000050 /* Get FEC settings */
-#define ETHTOOL_SFECPARAM      0x00000051 /* Set FEC settings */
-
-/* compatibility with older code */
-#define SPARC_ETH_GSET         ETHTOOL_GSET
-#define SPARC_ETH_SSET         ETHTOOL_SSET
-
-/* Link mode bit indices */
-enum ethtool_link_mode_bit_indices {
-       ETHTOOL_LINK_MODE_10baseT_Half_BIT      = 0,
-       ETHTOOL_LINK_MODE_10baseT_Full_BIT      = 1,
-       ETHTOOL_LINK_MODE_100baseT_Half_BIT     = 2,
-       ETHTOOL_LINK_MODE_100baseT_Full_BIT     = 3,
-       ETHTOOL_LINK_MODE_1000baseT_Half_BIT    = 4,
-       ETHTOOL_LINK_MODE_1000baseT_Full_BIT    = 5,
-       ETHTOOL_LINK_MODE_Autoneg_BIT           = 6,
-       ETHTOOL_LINK_MODE_TP_BIT                = 7,
-       ETHTOOL_LINK_MODE_AUI_BIT               = 8,
-       ETHTOOL_LINK_MODE_MII_BIT               = 9,
-       ETHTOOL_LINK_MODE_FIBRE_BIT             = 10,
-       ETHTOOL_LINK_MODE_BNC_BIT               = 11,
-       ETHTOOL_LINK_MODE_10000baseT_Full_BIT   = 12,
-       ETHTOOL_LINK_MODE_Pause_BIT             = 13,
-       ETHTOOL_LINK_MODE_Asym_Pause_BIT        = 14,
-       ETHTOOL_LINK_MODE_2500baseX_Full_BIT    = 15,
-       ETHTOOL_LINK_MODE_Backplane_BIT         = 16,
-       ETHTOOL_LINK_MODE_1000baseKX_Full_BIT   = 17,
-       ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 18,
-       ETHTOOL_LINK_MODE_10000baseKR_Full_BIT  = 19,
-       ETHTOOL_LINK_MODE_10000baseR_FEC_BIT    = 20,
-       ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 21,
-       ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 22,
-       ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 23,
-       ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 24,
-       ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 25,
-       ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 26,
-       ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 27,
-       ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 28,
-       ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 29,
-       ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 30,
-       ETHTOOL_LINK_MODE_25000baseCR_Full_BIT  = 31,
-       ETHTOOL_LINK_MODE_25000baseKR_Full_BIT  = 32,
-       ETHTOOL_LINK_MODE_25000baseSR_Full_BIT  = 33,
-       ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 34,
-       ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 35,
-       ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT        = 36,
-       ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT        = 37,
-       ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT        = 38,
-       ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT    = 39,
-       ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT         = 40,
-       ETHTOOL_LINK_MODE_1000baseX_Full_BIT    = 41,
-       ETHTOOL_LINK_MODE_10000baseCR_Full_BIT  = 42,
-       ETHTOOL_LINK_MODE_10000baseSR_Full_BIT  = 43,
-       ETHTOOL_LINK_MODE_10000baseLR_Full_BIT  = 44,
-       ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
-       ETHTOOL_LINK_MODE_10000baseER_Full_BIT  = 46,
-       ETHTOOL_LINK_MODE_2500baseT_Full_BIT    = 47,
-       ETHTOOL_LINK_MODE_5000baseT_Full_BIT    = 48,
-
-       ETHTOOL_LINK_MODE_FEC_NONE_BIT  = 49,
-       ETHTOOL_LINK_MODE_FEC_RS_BIT    = 50,
-       ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
-
-       /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
-        * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
-        * macro for bits > 31. The only way to use indices > 31 is to
-        * use the new ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS API.
-        */
-
-       __ETHTOOL_LINK_MODE_LAST
-         = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
-};
-
-#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name)     \
-       (1UL << (ETHTOOL_LINK_MODE_ ## base_name ## _BIT))
-
-/* DEPRECATED macros. Please migrate to
- * ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS API. Please do NOT
- * define any new SUPPORTED_* macro for bits > 31.
- */
-#define SUPPORTED_10baseT_Half         __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
-#define SUPPORTED_10baseT_Full         __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Full)
-#define SUPPORTED_100baseT_Half                __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Half)
-#define SUPPORTED_100baseT_Full                __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Full)
-#define SUPPORTED_1000baseT_Half       __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Half)
-#define SUPPORTED_1000baseT_Full       __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Full)
-#define SUPPORTED_Autoneg              __ETHTOOL_LINK_MODE_LEGACY_MASK(Autoneg)
-#define SUPPORTED_TP                   __ETHTOOL_LINK_MODE_LEGACY_MASK(TP)
-#define SUPPORTED_AUI                  __ETHTOOL_LINK_MODE_LEGACY_MASK(AUI)
-#define SUPPORTED_MII                  __ETHTOOL_LINK_MODE_LEGACY_MASK(MII)
-#define SUPPORTED_FIBRE                        __ETHTOOL_LINK_MODE_LEGACY_MASK(FIBRE)
-#define SUPPORTED_BNC                  __ETHTOOL_LINK_MODE_LEGACY_MASK(BNC)
-#define SUPPORTED_10000baseT_Full      __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseT_Full)
-#define SUPPORTED_Pause                        __ETHTOOL_LINK_MODE_LEGACY_MASK(Pause)
-#define SUPPORTED_Asym_Pause           __ETHTOOL_LINK_MODE_LEGACY_MASK(Asym_Pause)
-#define SUPPORTED_2500baseX_Full       __ETHTOOL_LINK_MODE_LEGACY_MASK(2500baseX_Full)
-#define SUPPORTED_Backplane            __ETHTOOL_LINK_MODE_LEGACY_MASK(Backplane)
-#define SUPPORTED_1000baseKX_Full      __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseKX_Full)
-#define SUPPORTED_10000baseKX4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKX4_Full)
-#define SUPPORTED_10000baseKR_Full     __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKR_Full)
-#define SUPPORTED_10000baseR_FEC       __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseR_FEC)
-#define SUPPORTED_20000baseMLD2_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseMLD2_Full)
-#define SUPPORTED_20000baseKR2_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseKR2_Full)
-#define SUPPORTED_40000baseKR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseKR4_Full)
-#define SUPPORTED_40000baseCR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseCR4_Full)
-#define SUPPORTED_40000baseSR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseSR4_Full)
-#define SUPPORTED_40000baseLR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseLR4_Full)
-#define SUPPORTED_56000baseKR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseKR4_Full)
-#define SUPPORTED_56000baseCR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseCR4_Full)
-#define SUPPORTED_56000baseSR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseSR4_Full)
-#define SUPPORTED_56000baseLR4_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseLR4_Full)
-/* Please do not define any new SUPPORTED_* macro for bits > 31, see
- * notice above.
- */
-
-/*
- * DEPRECATED macros. Please migrate to
- * ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS API. Please do NOT
- * define any new ADERTISE_* macro for bits > 31.
- */
-#define ADVERTISED_10baseT_Half                __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
-#define ADVERTISED_10baseT_Full                __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Full)
-#define ADVERTISED_100baseT_Half       __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Half)
-#define ADVERTISED_100baseT_Full       __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Full)
-#define ADVERTISED_1000baseT_Half      __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Half)
-#define ADVERTISED_1000baseT_Full      __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Full)
-#define ADVERTISED_Autoneg             __ETHTOOL_LINK_MODE_LEGACY_MASK(Autoneg)
-#define ADVERTISED_TP                  __ETHTOOL_LINK_MODE_LEGACY_MASK(TP)
-#define ADVERTISED_AUI                 __ETHTOOL_LINK_MODE_LEGACY_MASK(AUI)
-#define ADVERTISED_MII                 __ETHTOOL_LINK_MODE_LEGACY_MASK(MII)
-#define ADVERTISED_FIBRE               __ETHTOOL_LINK_MODE_LEGACY_MASK(FIBRE)
-#define ADVERTISED_BNC                 __ETHTOOL_LINK_MODE_LEGACY_MASK(BNC)
-#define ADVERTISED_10000baseT_Full     __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseT_Full)
-#define ADVERTISED_Pause               __ETHTOOL_LINK_MODE_LEGACY_MASK(Pause)
-#define ADVERTISED_Asym_Pause          __ETHTOOL_LINK_MODE_LEGACY_MASK(Asym_Pause)
-#define ADVERTISED_2500baseX_Full      __ETHTOOL_LINK_MODE_LEGACY_MASK(2500baseX_Full)
-#define ADVERTISED_Backplane           __ETHTOOL_LINK_MODE_LEGACY_MASK(Backplane)
-#define ADVERTISED_1000baseKX_Full     __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseKX_Full)
-#define ADVERTISED_10000baseKX4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKX4_Full)
-#define ADVERTISED_10000baseKR_Full    __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKR_Full)
-#define ADVERTISED_10000baseR_FEC      __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseR_FEC)
-#define ADVERTISED_20000baseMLD2_Full  __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseMLD2_Full)
-#define ADVERTISED_20000baseKR2_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseKR2_Full)
-#define ADVERTISED_40000baseKR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseKR4_Full)
-#define ADVERTISED_40000baseCR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseCR4_Full)
-#define ADVERTISED_40000baseSR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseSR4_Full)
-#define ADVERTISED_40000baseLR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseLR4_Full)
-#define ADVERTISED_56000baseKR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseKR4_Full)
-#define ADVERTISED_56000baseCR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseCR4_Full)
-#define ADVERTISED_56000baseSR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseSR4_Full)
-#define ADVERTISED_56000baseLR4_Full   __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseLR4_Full)
-/* Please do not define any new ADVERTISED_* macro for bits > 31, see
- * notice above.
- */
-
-/* The following are all involved in forcing a particular link
- * mode for the device for setting things.  When getting the
- * devices settings, these indicate the current mode and whether
- * it was forced up into this mode or autonegotiated.
- */
-
-/* The forced speed, in units of 1Mb. All values 0 to INT_MAX are legal.
- * Update drivers/net/phy/phy.c:phy_speed_to_str() and
- * drivers/net/bonding/bond_3ad.c:__get_link_speed() when adding new values.
- */
-#define SPEED_10               10
-#define SPEED_100              100
-#define SPEED_1000             1000
-#define SPEED_2500             2500
-#define SPEED_5000             5000
-#define SPEED_10000            10000
-#define SPEED_14000            14000
-#define SPEED_20000            20000
-#define SPEED_25000            25000
-#define SPEED_40000            40000
-#define SPEED_50000            50000
-#define SPEED_56000            56000
-#define SPEED_100000           100000
-
-#define SPEED_UNKNOWN          -1
-
-static __inline__ int ethtool_validate_speed(__u32 speed)
-{
-       return speed <= INT_MAX || speed == SPEED_UNKNOWN;
-}
-
-/* Duplex, half or full. */
-#define DUPLEX_HALF            0x00
-#define DUPLEX_FULL            0x01
-#define DUPLEX_UNKNOWN         0xff
-
-static __inline__ int ethtool_validate_duplex(__u8 duplex)
-{
-       switch (duplex) {
-       case DUPLEX_HALF:
-       case DUPLEX_FULL:
-       case DUPLEX_UNKNOWN:
-               return 1;
-       }
-
-       return 0;
-}
-
-/* Which connector port. */
-#define PORT_TP                        0x00
-#define PORT_AUI               0x01
-#define PORT_MII               0x02
-#define PORT_FIBRE             0x03
-#define PORT_BNC               0x04
-#define PORT_DA                        0x05
-#define PORT_NONE              0xef
-#define PORT_OTHER             0xff
-
-/* Which transceiver to use. */
-#define XCVR_INTERNAL          0x00 /* PHY and MAC are in the same package */
-#define XCVR_EXTERNAL          0x01 /* PHY and MAC are in different packages */
-#define XCVR_DUMMY1            0x02
-#define XCVR_DUMMY2            0x03
-#define XCVR_DUMMY3            0x04
-
-/* Enable or disable autonegotiation. */
-#define AUTONEG_DISABLE                0x00
-#define AUTONEG_ENABLE         0x01
-
-/* MDI or MDI-X status/control - if MDI/MDI_X/AUTO is set then
- * the driver is required to renegotiate link
- */
-#define ETH_TP_MDI_INVALID     0x00 /* status: unknown; control: unsupported */
-#define ETH_TP_MDI             0x01 /* status: MDI;     control: force MDI */
-#define ETH_TP_MDI_X           0x02 /* status: MDI-X;   control: force MDI-X */
-#define ETH_TP_MDI_AUTO                0x03 /*                  control: auto-select */
-
-/* Wake-On-Lan options. */
-#define WAKE_PHY               (1 << 0)
-#define WAKE_UCAST             (1 << 1)
-#define WAKE_MCAST             (1 << 2)
-#define WAKE_BCAST             (1 << 3)
-#define WAKE_ARP               (1 << 4)
-#define WAKE_MAGIC             (1 << 5)
-#define WAKE_MAGICSECURE       (1 << 6) /* only meaningful if WAKE_MAGIC */
-#define WAKE_FILTER            (1 << 7)
-
-/* L2-L4 network traffic flow types */
-#define        TCP_V4_FLOW     0x01    /* hash or spec (tcp_ip4_spec) */
-#define        UDP_V4_FLOW     0x02    /* hash or spec (udp_ip4_spec) */
-#define        SCTP_V4_FLOW    0x03    /* hash or spec (sctp_ip4_spec) */
-#define        AH_ESP_V4_FLOW  0x04    /* hash only */
-#define        TCP_V6_FLOW     0x05    /* hash or spec (tcp_ip6_spec; nfc only) */
-#define        UDP_V6_FLOW     0x06    /* hash or spec (udp_ip6_spec; nfc only) */
-#define        SCTP_V6_FLOW    0x07    /* hash or spec (sctp_ip6_spec; nfc only) */
-#define        AH_ESP_V6_FLOW  0x08    /* hash only */
-#define        AH_V4_FLOW      0x09    /* hash or spec (ah_ip4_spec) */
-#define        ESP_V4_FLOW     0x0a    /* hash or spec (esp_ip4_spec) */
-#define        AH_V6_FLOW      0x0b    /* hash or spec (ah_ip6_spec; nfc only) */
-#define        ESP_V6_FLOW     0x0c    /* hash or spec (esp_ip6_spec; nfc only) */
-#define        IPV4_USER_FLOW  0x0d    /* spec only (usr_ip4_spec) */
-#define        IP_USER_FLOW    IPV4_USER_FLOW
-#define        IPV6_USER_FLOW  0x0e    /* spec only (usr_ip6_spec; nfc only) */
-#define        IPV4_FLOW       0x10    /* hash only */
-#define        IPV6_FLOW       0x11    /* hash only */
-#define        ETHER_FLOW      0x12    /* spec only (ether_spec) */
-/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
-#define        FLOW_EXT        0x80000000
-#define        FLOW_MAC_EXT    0x40000000
-/* Flag to enable RSS spreading of traffic matching rule (nfc only) */
-#define        FLOW_RSS        0x20000000
-
-/* L3-L4 network traffic flow hash options */
-#define        RXH_L2DA        (1 << 1)
-#define        RXH_VLAN        (1 << 2)
-#define        RXH_L3_PROTO    (1 << 3)
-#define        RXH_IP_SRC      (1 << 4)
-#define        RXH_IP_DST      (1 << 5)
-#define        RXH_L4_B_0_1    (1 << 6) /* src port in case of TCP/UDP/SCTP */
-#define        RXH_L4_B_2_3    (1 << 7) /* dst port in case of TCP/UDP/SCTP */
-#define        RXH_DISCARD     (1 << 31)
-
-#define        RX_CLS_FLOW_DISC        0xffffffffffffffffULL
-#define RX_CLS_FLOW_WAKE       0xfffffffffffffffeULL
-
-/* Special RX classification rule insert location values */
-#define RX_CLS_LOC_SPECIAL     0x80000000      /* flag */
-#define RX_CLS_LOC_ANY         0xffffffff
-#define RX_CLS_LOC_FIRST       0xfffffffe
-#define RX_CLS_LOC_LAST                0xfffffffd
-
-/* EEPROM Standards for plug in modules */
-#define ETH_MODULE_SFF_8079            0x1
-#define ETH_MODULE_SFF_8079_LEN                256
-#define ETH_MODULE_SFF_8472            0x2
-#define ETH_MODULE_SFF_8472_LEN                512
-#define ETH_MODULE_SFF_8636            0x3
-#define ETH_MODULE_SFF_8636_LEN                256
-#define ETH_MODULE_SFF_8436            0x4
-#define ETH_MODULE_SFF_8436_LEN                256
-
-/* Reset flags */
-/* The reset() operation must clear the flags for the components which
- * were actually reset.  On successful return, the flags indicate the
- * components which were not reset, either because they do not exist
- * in the hardware or because they cannot be reset independently.  The
- * driver must never reset any components that were not requested.
- */
-enum ethtool_reset_flags {
-       /* These flags represent components dedicated to the interface
-        * the command is addressed to.  Shift any flag left by
-        * ETH_RESET_SHARED_SHIFT to reset a shared component of the
-        * same type.
-        */
-       ETH_RESET_MGMT          = 1 << 0,       /* Management processor */
-       ETH_RESET_IRQ           = 1 << 1,       /* Interrupt requester */
-       ETH_RESET_DMA           = 1 << 2,       /* DMA engine */
-       ETH_RESET_FILTER        = 1 << 3,       /* Filtering/flow direction */
-       ETH_RESET_OFFLOAD       = 1 << 4,       /* Protocol offload */
-       ETH_RESET_MAC           = 1 << 5,       /* Media access controller */
-       ETH_RESET_PHY           = 1 << 6,       /* Transceiver/PHY */
-       ETH_RESET_RAM           = 1 << 7,       /* RAM shared between
-                                                * multiple components */
-       ETH_RESET_AP            = 1 << 8,       /* Application processor */
-
-       ETH_RESET_DEDICATED     = 0x0000ffff,   /* All components dedicated to
-                                                * this interface */
-       ETH_RESET_ALL           = 0xffffffff,   /* All components used by this
-                                                * interface, even if shared */
-};
-#define ETH_RESET_SHARED_SHIFT 16
-
-
-/**
- * struct ethtool_link_settings - link control and status
- *
- * IMPORTANT, Backward compatibility notice: When implementing new
- *     user-space tools, please first try %ETHTOOL_GLINKSETTINGS, and
- *     if it succeeds use %ETHTOOL_SLINKSETTINGS to change link
- *     settings; do not use %ETHTOOL_SSET if %ETHTOOL_GLINKSETTINGS
- *     succeeded: stick to %ETHTOOL_GLINKSETTINGS/%SLINKSETTINGS in
- *     that case.  Conversely, if %ETHTOOL_GLINKSETTINGS fails, use
- *     %ETHTOOL_GSET to query and %ETHTOOL_SSET to change link
- *     settings; do not use %ETHTOOL_SLINKSETTINGS if
- *     %ETHTOOL_GLINKSETTINGS failed: stick to
- *     %ETHTOOL_GSET/%ETHTOOL_SSET in that case.
- *
- * @cmd: Command number = %ETHTOOL_GLINKSETTINGS or %ETHTOOL_SLINKSETTINGS
- * @speed: Link speed (Mbps)
- * @duplex: Duplex mode; one of %DUPLEX_*
- * @port: Physical connector type; one of %PORT_*
- * @phy_address: MDIO address of PHY (transceiver); 0 or 255 if not
- *     applicable.  For clause 45 PHYs this is the PRTAD.
- * @autoneg: Enable/disable autonegotiation and auto-detection;
- *     either %AUTONEG_DISABLE or %AUTONEG_ENABLE
- * @mdio_support: Bitmask of %ETH_MDIO_SUPPORTS_* flags for the MDIO
- *     protocols supported by the interface; 0 if unknown.
- *     Read-only.
- * @eth_tp_mdix: Ethernet twisted-pair MDI(-X) status; one of
- *     %ETH_TP_MDI_*.  If the status is unknown or not applicable, the
- *     value will be %ETH_TP_MDI_INVALID.  Read-only.
- * @eth_tp_mdix_ctrl: Ethernet twisted pair MDI(-X) control; one of
- *     %ETH_TP_MDI_*.  If MDI(-X) control is not implemented, reads
- *     yield %ETH_TP_MDI_INVALID and writes may be ignored or rejected.
- *     When written successfully, the link should be renegotiated if
- *     necessary.
- * @link_mode_masks_nwords: Number of 32-bit words for each of the
- *     supported, advertising, lp_advertising link mode bitmaps. For
- *     %ETHTOOL_GLINKSETTINGS: on entry, number of words passed by user
- *     (>= 0); on return, if handshake in progress, negative if
- *     request size unsupported by kernel: absolute value indicates
- *     kernel expected size and all the other fields but cmd
- *     are 0; otherwise (handshake completed), strictly positive
- *     to indicate size used by kernel and cmd field stays
- *     %ETHTOOL_GLINKSETTINGS, all other fields populated by driver. For
- *     %ETHTOOL_SLINKSETTINGS: must be valid on entry, ie. a positive
- *     value returned previously by %ETHTOOL_GLINKSETTINGS, otherwise
- *     refused. For drivers: ignore this field (use kernel's
- *     __ETHTOOL_LINK_MODE_MASK_NBITS instead), any change to it will
- *     be overwritten by kernel.
- * @supported: Bitmap with each bit meaning given by
- *     %ethtool_link_mode_bit_indices for the link modes, physical
- *     connectors and other link features for which the interface
- *     supports autonegotiation or auto-detection.  Read-only.
- * @advertising: Bitmap with each bit meaning given by
- *     %ethtool_link_mode_bit_indices for the link modes, physical
- *     connectors and other link features that are advertised through
- *     autonegotiation or enabled for auto-detection.
- * @lp_advertising: Bitmap with each bit meaning given by
- *     %ethtool_link_mode_bit_indices for the link modes, and other
- *     link features that the link partner advertised through
- *     autonegotiation; 0 if unknown or not applicable.  Read-only.
- * @transceiver: Used to distinguish different possible PHY types,
- *     reported consistently by PHYLIB.  Read-only.
- *
- * If autonegotiation is disabled, the speed and @duplex represent the
- * fixed link mode and are writable if the driver supports multiple
- * link modes.  If it is enabled then they are read-only; if the link
- * is up they represent the negotiated link mode; if the link is down,
- * the speed is 0, %SPEED_UNKNOWN or the highest enabled speed and
- * @duplex is %DUPLEX_UNKNOWN or the best enabled duplex mode.
- *
- * Some hardware interfaces may have multiple PHYs and/or physical
- * connectors fitted or do not allow the driver to detect which are
- * fitted.  For these interfaces @port and/or @phy_address may be
- * writable, possibly dependent on @autoneg being %AUTONEG_DISABLE.
- * Otherwise, attempts to write different values may be ignored or
- * rejected.
- *
- * Deprecated %ethtool_cmd fields transceiver, maxtxpkt and maxrxpkt
- * are not available in %ethtool_link_settings. Until all drivers are
- * converted to ignore them or to the new %ethtool_link_settings API,
- * for both queries and changes, users should always try
- * %ETHTOOL_GLINKSETTINGS first, and if it fails with -ENOTSUPP stick
- * only to %ETHTOOL_GSET and %ETHTOOL_SSET consistently. If it
- * succeeds, then users should stick to %ETHTOOL_GLINKSETTINGS and
- * %ETHTOOL_SLINKSETTINGS (which would support drivers implementing
- * either %ethtool_cmd or %ethtool_link_settings).
- *
- * Users should assume that all fields not marked read-only are
- * writable and subject to validation by the driver.  They should use
- * %ETHTOOL_GLINKSETTINGS to get the current values before making specific
- * changes and then applying them with %ETHTOOL_SLINKSETTINGS.
- *
- * Drivers that implement %get_link_ksettings and/or
- * %set_link_ksettings should ignore the @cmd
- * and @link_mode_masks_nwords fields (any change to them overwritten
- * by kernel), and rely only on kernel's internal
- * %__ETHTOOL_LINK_MODE_MASK_NBITS and
- * %ethtool_link_mode_mask_t. Drivers that implement
- * %set_link_ksettings() should validate all fields other than @cmd
- * and @link_mode_masks_nwords that are not described as read-only or
- * deprecated, and must ignore all fields described as read-only.
- */
-struct ethtool_link_settings {
-       __u32   cmd;
-       __u32   speed;
-       __u8    duplex;
-       __u8    port;
-       __u8    phy_address;
-       __u8    autoneg;
-       __u8    mdio_support;
-       __u8    eth_tp_mdix;
-       __u8    eth_tp_mdix_ctrl;
-       __s8    link_mode_masks_nwords;
-       __u8    transceiver;
-       __u8    reserved1[3];
-       __u32   reserved[7];
-       __u32   link_mode_masks[0];
-       /* layout of link_mode_masks fields:
-        * __u32 map_supported[link_mode_masks_nwords];
-        * __u32 map_advertising[link_mode_masks_nwords];
-        * __u32 map_lp_advertising[link_mode_masks_nwords];
-        */
-};
-#endif /* _LINUX_ETHTOOL_H */
diff --git a/include/linux/filter.h b/include/linux/filter.h
deleted file mode 100644 (file)
index eaef459..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * Linux Socket Filter Data Structures
- */
-
-#ifndef __LINUX_FILTER_H__
-#define __LINUX_FILTER_H__
-
-
-#include <linux/types.h>
-#include <linux/bpf_common.h>
-
-/*
- * Current version of the filter code architecture.
- */
-#define BPF_MAJOR_VERSION 1
-#define BPF_MINOR_VERSION 1
-
-/*
- *     Try and keep these values and structures similar to BSD, especially
- *     the BPF code definitions which need to match so you can share filters
- */
-struct sock_filter {   /* Filter block */
-       __u16   code;   /* Actual filter code */
-       __u8    jt;     /* Jump true */
-       __u8    jf;     /* Jump false */
-       __u32   k;      /* Generic multiuse field */
-};
-
-struct sock_fprog {    /* Required for SO_ATTACH_FILTER. */
-       unsigned short          len;    /* Number of filter blocks */
-       struct sock_filter *filter;
-};
-
-/* ret - BPF_K and BPF_X also apply */
-#define BPF_RVAL(code)  ((code) & 0x18)
-#define         BPF_A           0x10
-
-/* misc */
-#define BPF_MISCOP(code) ((code) & 0xf8)
-#define         BPF_TAX         0x00
-#define         BPF_TXA         0x80
-
-/*
- * Macros for filter block array initializers.
- */
-#ifndef BPF_STMT
-#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
-#endif
-#ifndef BPF_JUMP
-#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
-#endif
-
-/*
- * Number of scratch memory words for: BPF_ST and BPF_STX
- */
-#define BPF_MEMWORDS 16
-
-/* RATIONALE. Negative offsets are invalid in BPF.
-   We use them to reference ancillary data.
-   Unlike introduction new instructions, it does not break
-   existing compilers/optimizers.
- */
-#define SKF_AD_OFF    (-0x1000)
-#define SKF_AD_PROTOCOL 0
-#define SKF_AD_PKTTYPE         4
-#define SKF_AD_IFINDEX         8
-#define SKF_AD_NLATTR  12
-#define SKF_AD_NLATTR_NEST     16
-#define SKF_AD_MARK    20
-#define SKF_AD_QUEUE   24
-#define SKF_AD_HATYPE  28
-#define SKF_AD_RXHASH  32
-#define SKF_AD_CPU     36
-#define SKF_AD_ALU_XOR_X       40
-#define SKF_AD_VLAN_TAG        44
-#define SKF_AD_VLAN_TAG_PRESENT 48
-#define SKF_AD_PAY_OFFSET      52
-#define SKF_AD_RANDOM  56
-#define SKF_AD_VLAN_TPID       60
-#define SKF_AD_MAX     64
-
-#define SKF_NET_OFF    (-0x100000)
-#define SKF_LL_OFF     (-0x200000)
-
-#define BPF_NET_OFF    SKF_NET_OFF
-#define BPF_LL_OFF     SKF_LL_OFF
-
-#endif /* __LINUX_FILTER_H__ */
diff --git a/include/linux/hdlc/ioctl.h b/include/linux/hdlc/ioctl.h
deleted file mode 100644 (file)
index 0fe4238..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __HDLC_IOCTL_H__
-#define __HDLC_IOCTL_H__
-
-
-#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */
-
-#define CLOCK_DEFAULT   0      /* Default setting */
-#define CLOCK_EXT      1       /* External TX and RX clock - DTE */
-#define CLOCK_INT      2       /* Internal TX and RX clock - DCE */
-#define CLOCK_TXINT    3       /* Internal TX and external RX clock */
-#define CLOCK_TXFROMRX 4       /* TX clock derived from external RX clock */
-
-
-#define ENCODING_DEFAULT       0 /* Default setting */
-#define ENCODING_NRZ           1
-#define ENCODING_NRZI          2
-#define ENCODING_FM_MARK       3
-#define ENCODING_FM_SPACE      4
-#define ENCODING_MANCHESTER    5
-
-
-#define PARITY_DEFAULT         0 /* Default setting */
-#define PARITY_NONE            1 /* No parity */
-#define PARITY_CRC16_PR0       2 /* CRC16, initial value 0x0000 */
-#define PARITY_CRC16_PR1       3 /* CRC16, initial value 0xFFFF */
-#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */
-#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */
-#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
-#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */
-
-#define LMI_DEFAULT            0 /* Default setting */
-#define LMI_NONE               1 /* No LMI, all PVCs are static */
-#define LMI_ANSI               2 /* ANSI Annex D */
-#define LMI_CCITT              3 /* ITU-T Annex A */
-#define LMI_CISCO              4 /* The "original" LMI, aka Gang of Four */
-
-#ifndef __ASSEMBLY__
-
-typedef struct {
-       unsigned int clock_rate; /* bits per second */
-       unsigned int clock_type; /* internal, external, TX-internal etc. */
-       unsigned short loopback;
-} sync_serial_settings;          /* V.35, V.24, X.21 */
-
-typedef struct {
-       unsigned int clock_rate; /* bits per second */
-       unsigned int clock_type; /* internal, external, TX-internal etc. */
-       unsigned short loopback;
-       unsigned int slot_map;
-} te1_settings;                  /* T1, E1 */
-
-typedef struct {
-       unsigned short encoding;
-       unsigned short parity;
-} raw_hdlc_proto;
-
-typedef struct {
-       unsigned int t391;
-       unsigned int t392;
-       unsigned int n391;
-       unsigned int n392;
-       unsigned int n393;
-       unsigned short lmi;
-       unsigned short dce; /* 1 for DCE (network side) operation */
-} fr_proto;
-
-typedef struct {
-       unsigned int dlci;
-} fr_proto_pvc;          /* for creating/deleting FR PVCs */
-
-typedef struct {
-       unsigned int dlci;
-       char master[IFNAMSIZ];  /* Name of master FRAD device */
-}fr_proto_pvc_info;            /* for returning PVC information only */
-
-typedef struct {
-    unsigned int interval;
-    unsigned int timeout;
-} cisco_proto;
-
-/* PPP doesn't need any info now - supply length = 0 to ioctl */
-
-#endif /* __ASSEMBLY__ */
-#endif /* __HDLC_IOCTL_H__ */
diff --git a/include/linux/if.h b/include/linux/if.h
deleted file mode 100644 (file)
index 495cdd2..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the INET interface module.
- *
- * Version:    @(#)if.h        1.0.2   04/18/93
- *
- * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
- *             Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_H
-#define _LINUX_IF_H
-
-#include <linux/libc-compat.h>          /* for compatibility with glibc */
-#include <linux/types.h>               /* for "__kernel_caddr_t" et al */
-#include <linux/socket.h>              /* for "struct sockaddr" et al  */
-               /* for "__user" et al           */
-
-#include <sys/socket.h>                        /* for struct sockaddr.         */
-
-#if __UAPI_DEF_IF_IFNAMSIZ
-#define        IFNAMSIZ        16
-#endif /* __UAPI_DEF_IF_IFNAMSIZ */
-#define        IFALIASZ        256
-#include <linux/hdlc/ioctl.h>
-
-/* For glibc compatibility. An empty enum does not compile. */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
-    __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
-/**
- * enum net_device_flags - &struct net_device flags
- *
- * These are the &struct net_device flags, they can be set by drivers, the
- * kernel and some can be triggered by userspace. Userspace can query and
- * set these flags using userspace utilities but there is also a sysfs
- * entry available for all dev flags which can be queried and set. These flags
- * are shared for all types of net_devices. The sysfs entries are available
- * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
- * are annotated below, note that only a few flags can be toggled and some
- * other flags are always preserved from the original net_device flags
- * even if you try to set them via sysfs. Flags which are always preserved
- * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
- * are annotated below as such.
- *
- * You should have a pretty good reason to be extending these flags.
- *
- * @IFF_UP: interface is up. Can be toggled through sysfs.
- * @IFF_BROADCAST: broadcast address valid. Volatile.
- * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
- * @IFF_LOOPBACK: is a loopback net. Volatile.
- * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
- * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
- *     Volatile.
- * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
- * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
- * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
- * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
- *     sysfs.
- * @IFF_MASTER: master of a load balancer. Volatile.
- * @IFF_SLAVE: slave of a load balancer. Volatile.
- * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
- * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
- * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
- * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
- *     through sysfs.
- * @IFF_LOWER_UP: driver signals L1 up. Volatile.
- * @IFF_DORMANT: driver signals dormant. Volatile.
- * @IFF_ECHO: echo sent packets. Volatile.
- */
-enum net_device_flags {
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
-       IFF_UP                          = 1<<0,  /* sysfs */
-       IFF_BROADCAST                   = 1<<1,  /* __volatile__ */
-       IFF_DEBUG                       = 1<<2,  /* sysfs */
-       IFF_LOOPBACK                    = 1<<3,  /* __volatile__ */
-       IFF_POINTOPOINT                 = 1<<4,  /* __volatile__ */
-       IFF_NOTRAILERS                  = 1<<5,  /* sysfs */
-       IFF_RUNNING                     = 1<<6,  /* __volatile__ */
-       IFF_NOARP                       = 1<<7,  /* sysfs */
-       IFF_PROMISC                     = 1<<8,  /* sysfs */
-       IFF_ALLMULTI                    = 1<<9,  /* sysfs */
-       IFF_MASTER                      = 1<<10, /* __volatile__ */
-       IFF_SLAVE                       = 1<<11, /* __volatile__ */
-       IFF_MULTICAST                   = 1<<12, /* sysfs */
-       IFF_PORTSEL                     = 1<<13, /* sysfs */
-       IFF_AUTOMEDIA                   = 1<<14, /* sysfs */
-       IFF_DYNAMIC                     = 1<<15, /* sysfs */
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-       IFF_LOWER_UP                    = 1<<16, /* __volatile__ */
-       IFF_DORMANT                     = 1<<17, /* __volatile__ */
-       IFF_ECHO                        = 1<<18, /* __volatile__ */
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-};
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
-#define IFF_UP                         IFF_UP
-#define IFF_BROADCAST                  IFF_BROADCAST
-#define IFF_DEBUG                      IFF_DEBUG
-#define IFF_LOOPBACK                   IFF_LOOPBACK
-#define IFF_POINTOPOINT                        IFF_POINTOPOINT
-#define IFF_NOTRAILERS                 IFF_NOTRAILERS
-#define IFF_RUNNING                    IFF_RUNNING
-#define IFF_NOARP                      IFF_NOARP
-#define IFF_PROMISC                    IFF_PROMISC
-#define IFF_ALLMULTI                   IFF_ALLMULTI
-#define IFF_MASTER                     IFF_MASTER
-#define IFF_SLAVE                      IFF_SLAVE
-#define IFF_MULTICAST                  IFF_MULTICAST
-#define IFF_PORTSEL                    IFF_PORTSEL
-#define IFF_AUTOMEDIA                  IFF_AUTOMEDIA
-#define IFF_DYNAMIC                    IFF_DYNAMIC
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
-
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-#define IFF_LOWER_UP                   IFF_LOWER_UP
-#define IFF_DORMANT                    IFF_DORMANT
-#define IFF_ECHO                       IFF_ECHO
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-
-#define IFF_VOLATILE   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
-               IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
-
-#define IF_GET_IFACE   0x0001          /* for querying only */
-#define IF_GET_PROTO   0x0002
-
-/* For definitions see hdlc.h */
-#define IF_IFACE_V35   0x1000          /* V.35 serial interface        */
-#define IF_IFACE_V24   0x1001          /* V.24 serial interface        */
-#define IF_IFACE_X21   0x1002          /* X.21 serial interface        */
-#define IF_IFACE_T1    0x1003          /* T1 telco serial interface    */
-#define IF_IFACE_E1    0x1004          /* E1 telco serial interface    */
-#define IF_IFACE_SYNC_SERIAL 0x1005    /* can't be set by software     */
-#define IF_IFACE_X21D   0x1006          /* X.21 Dual Clocking (FarSite) */
-
-/* For definitions see hdlc.h */
-#define IF_PROTO_HDLC  0x2000          /* raw HDLC protocol            */
-#define IF_PROTO_PPP   0x2001          /* PPP protocol                 */
-#define IF_PROTO_CISCO 0x2002          /* Cisco HDLC protocol          */
-#define IF_PROTO_FR    0x2003          /* Frame Relay protocol         */
-#define IF_PROTO_FR_ADD_PVC 0x2004     /*    Create FR PVC             */
-#define IF_PROTO_FR_DEL_PVC 0x2005     /*    Delete FR PVC             */
-#define IF_PROTO_X25   0x2006          /* X.25                         */
-#define IF_PROTO_HDLC_ETH 0x2007       /* raw HDLC, Ethernet emulation */
-#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /*  Create FR Ethernet-bridged PVC */
-#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /*  Delete FR Ethernet-bridged PVC */
-#define IF_PROTO_FR_PVC        0x200A          /* for reading PVC status       */
-#define IF_PROTO_FR_ETH_PVC 0x200B
-#define IF_PROTO_RAW    0x200C          /* RAW Socket                   */
-
-/* RFC 2863 operational status */
-enum {
-       IF_OPER_UNKNOWN,
-       IF_OPER_NOTPRESENT,
-       IF_OPER_DOWN,
-       IF_OPER_LOWERLAYERDOWN,
-       IF_OPER_TESTING,
-       IF_OPER_DORMANT,
-       IF_OPER_UP,
-};
-
-/* link modes */
-enum {
-       IF_LINK_MODE_DEFAULT,
-       IF_LINK_MODE_DORMANT,   /* limit upward transition to dormant */
-};
-
-/*
- *     Device mapping structure. I'd just gone off and designed a 
- *     beautiful scheme using only loadable modules with arguments
- *     for driver options and along come the PCMCIA people 8)
- *
- *     Ah well. The get() side of this is good for WDSETUP, and it'll
- *     be handy for debugging things. The set side is fine for now and
- *     being very small might be worth keeping for clean configuration.
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFMAP
-struct ifmap {
-       unsigned long mem_start;
-       unsigned long mem_end;
-       unsigned short base_addr; 
-       unsigned char irq;
-       unsigned char dma;
-       unsigned char port;
-       /* 3 bytes spare */
-};
-#endif /* __UAPI_DEF_IF_IFMAP */
-
-struct if_settings {
-       unsigned int type;      /* Type of physical device or protocol */
-       unsigned int size;      /* Size of the data allocated by the caller */
-       union {
-               /* {atm/eth/dsl}_settings anyone ? */
-               raw_hdlc_proto          *raw_hdlc;
-               cisco_proto             *cisco;
-               fr_proto                *fr;
-               fr_proto_pvc            *fr_pvc;
-               fr_proto_pvc_info       *fr_pvc_info;
-
-               /* interface settings */
-               sync_serial_settings    *sync;
-               te1_settings            *te1;
-       } ifs_ifsu;
-};
-
-/*
- * Interface request structure used for socket
- * ioctl's.  All interface ioctl's must have parameter
- * definitions which begin with ifr_name.  The
- * remainder may be interface specific.
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFREQ
-struct ifreq {
-#define IFHWADDRLEN    6
-       union
-       {
-               char    ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
-       } ifr_ifrn;
-       
-       union {
-               struct  sockaddr ifru_addr;
-               struct  sockaddr ifru_dstaddr;
-               struct  sockaddr ifru_broadaddr;
-               struct  sockaddr ifru_netmask;
-               struct  sockaddr ifru_hwaddr;
-               short   ifru_flags;
-               int     ifru_ivalue;
-               int     ifru_mtu;
-               struct  ifmap ifru_map;
-               char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
-               char    ifru_newname[IFNAMSIZ];
-               void *  ifru_data;
-               struct  if_settings ifru_settings;
-       } ifr_ifru;
-};
-#endif /* __UAPI_DEF_IF_IFREQ */
-
-#define ifr_name       ifr_ifrn.ifrn_name      /* interface name       */
-#define ifr_hwaddr     ifr_ifru.ifru_hwaddr    /* MAC address          */
-#define        ifr_addr        ifr_ifru.ifru_addr      /* address              */
-#define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
-#define        ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
-#define        ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
-#define        ifr_flags       ifr_ifru.ifru_flags     /* flags                */
-#define        ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
-#define        ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
-#define ifr_map                ifr_ifru.ifru_map       /* device map           */
-#define ifr_slave      ifr_ifru.ifru_slave     /* slave device         */
-#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface */
-#define ifr_ifindex    ifr_ifru.ifru_ivalue    /* interface index      */
-#define ifr_bandwidth  ifr_ifru.ifru_ivalue    /* link bandwidth       */
-#define ifr_qlen       ifr_ifru.ifru_ivalue    /* Queue length         */
-#define ifr_newname    ifr_ifru.ifru_newname   /* New name             */
-#define ifr_settings   ifr_ifru.ifru_settings  /* Device/proto settings*/
-
-/*
- * Structure used in SIOCGIFCONF request.
- * Used to retrieve interface configuration
- * for machine (useful for programs which
- * must know all networks accessible).
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFCONF
-struct ifconf  {
-       int     ifc_len;                        /* size of buffer       */
-       union {
-               char *ifcu_buf;
-               struct ifreq *ifcu_req;
-       } ifc_ifcu;
-};
-#endif /* __UAPI_DEF_IF_IFCONF */
-
-#define        ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
-#define        ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
-
-#endif /* _LINUX_IF_H */
diff --git a/include/linux/if_addr.h b/include/linux/if_addr.h
deleted file mode 100644 (file)
index a924606..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_IF_ADDR_H
-#define __LINUX_IF_ADDR_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-struct ifaddrmsg {
-       __u8            ifa_family;
-       __u8            ifa_prefixlen;  /* The prefix length            */
-       __u8            ifa_flags;      /* Flags                        */
-       __u8            ifa_scope;      /* Address scope                */
-       __u32           ifa_index;      /* Link index                   */
-};
-
-/*
- * Important comment:
- * IFA_ADDRESS is prefix address, rather than local interface address.
- * It makes no difference for normally configured broadcast interfaces,
- * but for point-to-point IFA_ADDRESS is DESTINATION address,
- * local address is supplied in IFA_LOCAL attribute.
- *
- * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
- * If present, the value from struct ifaddrmsg will be ignored.
- */
-enum {
-       IFA_UNSPEC,
-       IFA_ADDRESS,
-       IFA_LOCAL,
-       IFA_LABEL,
-       IFA_BROADCAST,
-       IFA_ANYCAST,
-       IFA_CACHEINFO,
-       IFA_MULTICAST,
-       IFA_FLAGS,
-       IFA_RT_PRIORITY,  /* u32, priority/metric for prefix route */
-       __IFA_MAX,
-};
-
-#define IFA_MAX (__IFA_MAX - 1)
-
-/* ifa_flags */
-#define IFA_F_SECONDARY                0x01
-#define IFA_F_TEMPORARY                IFA_F_SECONDARY
-
-#define        IFA_F_NODAD             0x02
-#define IFA_F_OPTIMISTIC       0x04
-#define IFA_F_DADFAILED                0x08
-#define        IFA_F_HOMEADDRESS       0x10
-#define IFA_F_DEPRECATED       0x20
-#define IFA_F_TENTATIVE                0x40
-#define IFA_F_PERMANENT                0x80
-#define IFA_F_MANAGETEMPADDR   0x100
-#define IFA_F_NOPREFIXROUTE    0x200
-#define IFA_F_MCAUTOJOIN       0x400
-#define IFA_F_STABLE_PRIVACY   0x800
-
-struct ifa_cacheinfo {
-       __u32   ifa_prefered;
-       __u32   ifa_valid;
-       __u32   cstamp; /* created timestamp, hundredths of seconds */
-       __u32   tstamp; /* updated timestamp, hundredths of seconds */
-};
-
-/* backwards compatibility for userspace */
-#define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
-#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
-
-#endif
diff --git a/include/linux/if_bonding.h b/include/linux/if_bonding.h
deleted file mode 100644 (file)
index 61a1bf6..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
-/*
- * Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
- *
- *
- * Portions are (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
- * NCM: Network and Communications Management, Inc.
- *
- * BUT, I'm the one who modified it for ethernet, so:
- * (c) Copyright 1999, Thomas Davis, tadavis@lbl.gov
- *
- *     This software may be used and distributed according to the terms
- *     of the GNU Public License, incorporated herein by reference.
- *
- * 2003/03/18 - Amir Noam <amir.noam at intel dot com>
- *     - Added support for getting slave's speed and duplex via ethtool.
- *       Needed for 802.3ad and other future modes.
- *
- * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Shmulik Hen <shmulik.hen at intel dot com>
- *     - Enable support of modes that need to use the unique mac address of
- *       each slave.
- *
- * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Amir Noam <amir.noam at intel dot com>
- *     - Moved driver's private data types to bonding.h
- *
- * 2003/03/18 - Amir Noam <amir.noam at intel dot com>,
- *             Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Shmulik Hen <shmulik.hen at intel dot com>
- *     - Added support for IEEE 802.3ad Dynamic link aggregation mode.
- *
- * 2003/05/01 - Amir Noam <amir.noam at intel dot com>
- *     - Added ABI version control to restore compatibility between
- *       new/old ifenslave and new/old bonding.
- *
- * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com>
- *     - Code cleanup and style changes
- *
- * 2005/05/05 - Jason Gabler <jygabler at lbl dot gov>
- *      - added definitions for various XOR hashing policies
- */
-
-#ifndef _LINUX_IF_BONDING_H
-#define _LINUX_IF_BONDING_H
-
-#include <linux/if.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-
-/* userland - kernel ABI version (2003/05/08) */
-#define BOND_ABI_VERSION 2
-
-/*
- * We can remove these ioctl definitions in 2.5.  People should use the
- * SIOC*** versions of them instead
- */
-#define BOND_ENSLAVE_OLD               (SIOCDEVPRIVATE)
-#define BOND_RELEASE_OLD               (SIOCDEVPRIVATE + 1)
-#define BOND_SETHWADDR_OLD             (SIOCDEVPRIVATE + 2)
-#define BOND_SLAVE_INFO_QUERY_OLD      (SIOCDEVPRIVATE + 11)
-#define BOND_INFO_QUERY_OLD            (SIOCDEVPRIVATE + 12)
-#define BOND_CHANGE_ACTIVE_OLD         (SIOCDEVPRIVATE + 13)
-
-#define BOND_CHECK_MII_STATUS  (SIOCGMIIPHY)
-
-#define BOND_MODE_ROUNDROBIN   0
-#define BOND_MODE_ACTIVEBACKUP 1
-#define BOND_MODE_XOR          2
-#define BOND_MODE_BROADCAST    3
-#define BOND_MODE_8023AD        4
-#define BOND_MODE_TLB           5
-#define BOND_MODE_ALB          6 /* TLB + RLB (receive load balancing) */
-
-/* each slave's link has 4 states */
-#define BOND_LINK_UP    0           /* link is up and running */
-#define BOND_LINK_FAIL  1           /* link has just gone down */
-#define BOND_LINK_DOWN  2           /* link has been down for too long time */
-#define BOND_LINK_BACK  3           /* link is going back */
-
-/* each slave has several states */
-#define BOND_STATE_ACTIVE       0   /* link is active */
-#define BOND_STATE_BACKUP       1   /* link is backup */
-
-#define BOND_DEFAULT_MAX_BONDS  1   /* Default maximum number of devices to support */
-
-#define BOND_DEFAULT_TX_QUEUES 16   /* Default number of tx queues per device */
-
-#define BOND_DEFAULT_RESEND_IGMP       1 /* Default number of IGMP membership reports */
-
-/* hashing types */
-#define BOND_XMIT_POLICY_LAYER2                0 /* layer 2 (MAC only), default */
-#define BOND_XMIT_POLICY_LAYER34       1 /* layer 3+4 (IP ^ (TCP || UDP)) */
-#define BOND_XMIT_POLICY_LAYER23       2 /* layer 2+3 (IP ^ MAC) */
-#define BOND_XMIT_POLICY_ENCAP23       3 /* encapsulated layer 2+3 */
-#define BOND_XMIT_POLICY_ENCAP34       4 /* encapsulated layer 3+4 */
-
-typedef struct ifbond {
-       __s32 bond_mode;
-       __s32 num_slaves;
-       __s32 miimon;
-} ifbond;
-
-typedef struct ifslave {
-       __s32 slave_id; /* Used as an IN param to the BOND_SLAVE_INFO_QUERY ioctl */
-       char slave_name[IFNAMSIZ];
-       __s8 link;
-       __s8 state;
-       __u32  link_failure_count;
-} ifslave;
-
-struct ad_info {
-       __u16 aggregator_id;
-       __u16 ports;
-       __u16 actor_key;
-       __u16 partner_key;
-       __u8 partner_system[ETH_ALEN];
-};
-
-#endif /* _LINUX_IF_BONDING_H */
-
-/*
- * Local variables:
- *  version-control: t
- *  kept-new-versions: 5
- *  c-indent-level: 8
- *  c-basic-offset: 8
- *  tab-width: 8
- * End:
- */
-
diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
deleted file mode 100644 (file)
index 4c67082..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
-/*
- *     Linux ethernet bridge
- *
- *     Authors:
- *     Lennert Buytenhek               <buytenh@gnu.org>
- *
- *     This program is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     as published by the Free Software Foundation; either version
- *     2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_IF_BRIDGE_H
-#define _LINUX_IF_BRIDGE_H
-
-#include <linux/types.h>
-#include <linux/if_ether.h>
-
-#define SYSFS_BRIDGE_ATTR      "bridge"
-#define SYSFS_BRIDGE_FDB       "brforward"
-#define SYSFS_BRIDGE_PORT_SUBDIR "brif"
-#define SYSFS_BRIDGE_PORT_ATTR "brport"
-#define SYSFS_BRIDGE_PORT_LINK "bridge"
-
-#define BRCTL_VERSION 1
-
-#define BRCTL_GET_VERSION 0
-#define BRCTL_GET_BRIDGES 1
-#define BRCTL_ADD_BRIDGE 2
-#define BRCTL_DEL_BRIDGE 3
-#define BRCTL_ADD_IF 4
-#define BRCTL_DEL_IF 5
-#define BRCTL_GET_BRIDGE_INFO 6
-#define BRCTL_GET_PORT_LIST 7
-#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
-#define BRCTL_SET_BRIDGE_HELLO_TIME 9
-#define BRCTL_SET_BRIDGE_MAX_AGE 10
-#define BRCTL_SET_AGEING_TIME 11
-#define BRCTL_SET_GC_INTERVAL 12
-#define BRCTL_GET_PORT_INFO 13
-#define BRCTL_SET_BRIDGE_STP_STATE 14
-#define BRCTL_SET_BRIDGE_PRIORITY 15
-#define BRCTL_SET_PORT_PRIORITY 16
-#define BRCTL_SET_PATH_COST 17
-#define BRCTL_GET_FDB_ENTRIES 18
-
-#define BR_STATE_DISABLED 0
-#define BR_STATE_LISTENING 1
-#define BR_STATE_LEARNING 2
-#define BR_STATE_FORWARDING 3
-#define BR_STATE_BLOCKING 4
-
-struct __bridge_info {
-       __u64 designated_root;
-       __u64 bridge_id;
-       __u32 root_path_cost;
-       __u32 max_age;
-       __u32 hello_time;
-       __u32 forward_delay;
-       __u32 bridge_max_age;
-       __u32 bridge_hello_time;
-       __u32 bridge_forward_delay;
-       __u8 topology_change;
-       __u8 topology_change_detected;
-       __u8 root_port;
-       __u8 stp_enabled;
-       __u32 ageing_time;
-       __u32 gc_interval;
-       __u32 hello_timer_value;
-       __u32 tcn_timer_value;
-       __u32 topology_change_timer_value;
-       __u32 gc_timer_value;
-};
-
-struct __port_info {
-       __u64 designated_root;
-       __u64 designated_bridge;
-       __u16 port_id;
-       __u16 designated_port;
-       __u32 path_cost;
-       __u32 designated_cost;
-       __u8 state;
-       __u8 top_change_ack;
-       __u8 config_pending;
-       __u8 unused0;
-       __u32 message_age_timer_value;
-       __u32 forward_delay_timer_value;
-       __u32 hold_timer_value;
-};
-
-struct __fdb_entry {
-       __u8 mac_addr[ETH_ALEN];
-       __u8 port_no;
-       __u8 is_local;
-       __u32 ageing_timer_value;
-       __u8 port_hi;
-       __u8 pad0;
-       __u16 unused;
-};
-
-/* Bridge Flags */
-#define BRIDGE_FLAGS_MASTER    1       /* Bridge command to/from master */
-#define BRIDGE_FLAGS_SELF      2       /* Bridge command to/from lowerdev */
-
-#define BRIDGE_MODE_VEB                0       /* Default loopback mode */
-#define BRIDGE_MODE_VEPA       1       /* 802.1Qbg defined VEPA mode */
-#define BRIDGE_MODE_UNDEF      0xFFFF  /* mode undefined */
-
-/* Bridge management nested attributes
- * [IFLA_AF_SPEC] = {
- *     [IFLA_BRIDGE_FLAGS]
- *     [IFLA_BRIDGE_MODE]
- *     [IFLA_BRIDGE_VLAN_INFO]
- * }
- */
-enum {
-       IFLA_BRIDGE_FLAGS,
-       IFLA_BRIDGE_MODE,
-       IFLA_BRIDGE_VLAN_INFO,
-       IFLA_BRIDGE_VLAN_TUNNEL_INFO,
-       __IFLA_BRIDGE_MAX,
-};
-#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
-
-#define BRIDGE_VLAN_INFO_MASTER        (1<<0)  /* Operate on Bridge device as well */
-#define BRIDGE_VLAN_INFO_PVID  (1<<1)  /* VLAN is PVID, ingress untagged */
-#define BRIDGE_VLAN_INFO_UNTAGGED      (1<<2)  /* VLAN egresses untagged */
-#define BRIDGE_VLAN_INFO_RANGE_BEGIN   (1<<3) /* VLAN is start of vlan range */
-#define BRIDGE_VLAN_INFO_RANGE_END     (1<<4) /* VLAN is end of vlan range */
-#define BRIDGE_VLAN_INFO_BRENTRY       (1<<5) /* Global bridge VLAN entry */
-
-struct bridge_vlan_info {
-       __u16 flags;
-       __u16 vid;
-};
-
-enum {
-       IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
-       IFLA_BRIDGE_VLAN_TUNNEL_ID,
-       IFLA_BRIDGE_VLAN_TUNNEL_VID,
-       IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
-       __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
-};
-
-#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
-
-struct bridge_vlan_xstats {
-       __u64 rx_bytes;
-       __u64 rx_packets;
-       __u64 tx_bytes;
-       __u64 tx_packets;
-       __u16 vid;
-       __u16 flags;
-       __u32 pad2;
-};
-
-/* Bridge multicast database attributes
- * [MDBA_MDB] = {
- *     [MDBA_MDB_ENTRY] = {
- *         [MDBA_MDB_ENTRY_INFO] {
- *             struct br_mdb_entry
- *             [MDBA_MDB_EATTR attributes]
- *         }
- *     }
- * }
- * [MDBA_ROUTER] = {
- *    [MDBA_ROUTER_PORT] = {
- *        u32 ifindex
- *        [MDBA_ROUTER_PATTR attributes]
- *    }
- * }
- */
-enum {
-       MDBA_UNSPEC,
-       MDBA_MDB,
-       MDBA_ROUTER,
-       __MDBA_MAX,
-};
-#define MDBA_MAX (__MDBA_MAX - 1)
-
-enum {
-       MDBA_MDB_UNSPEC,
-       MDBA_MDB_ENTRY,
-       __MDBA_MDB_MAX,
-};
-#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
-
-enum {
-       MDBA_MDB_ENTRY_UNSPEC,
-       MDBA_MDB_ENTRY_INFO,
-       __MDBA_MDB_ENTRY_MAX,
-};
-#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
-
-/* per mdb entry additional attributes */
-enum {
-       MDBA_MDB_EATTR_UNSPEC,
-       MDBA_MDB_EATTR_TIMER,
-       __MDBA_MDB_EATTR_MAX
-};
-#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
-
-/* multicast router types */
-enum {
-       MDB_RTR_TYPE_DISABLED,
-       MDB_RTR_TYPE_TEMP_QUERY,
-       MDB_RTR_TYPE_PERM,
-       MDB_RTR_TYPE_TEMP
-};
-
-enum {
-       MDBA_ROUTER_UNSPEC,
-       MDBA_ROUTER_PORT,
-       __MDBA_ROUTER_MAX,
-};
-#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
-
-/* router port attributes */
-enum {
-       MDBA_ROUTER_PATTR_UNSPEC,
-       MDBA_ROUTER_PATTR_TIMER,
-       MDBA_ROUTER_PATTR_TYPE,
-       __MDBA_ROUTER_PATTR_MAX
-};
-#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
-
-struct br_port_msg {
-       __u8  family;
-       __u32 ifindex;
-};
-
-enum {
-       MDBA_SET_ENTRY_UNSPEC,
-       MDBA_SET_ENTRY,
-       __MDBA_SET_ENTRY_MAX,
-};
-#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
-
-/* Embedded inside LINK_XSTATS_TYPE_BRIDGE */
-enum {
-       BRIDGE_XSTATS_UNSPEC,
-       BRIDGE_XSTATS_VLAN,
-       BRIDGE_XSTATS_MCAST,
-       BRIDGE_XSTATS_PAD,
-       __BRIDGE_XSTATS_MAX
-};
-#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
-
-enum {
-       BR_MCAST_DIR_RX,
-       BR_MCAST_DIR_TX,
-       BR_MCAST_DIR_SIZE
-};
-
-/* IGMP/MLD statistics */
-struct br_mcast_stats {
-       __u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_leaves[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_parse_errors;
-
-       __u64 mld_v1queries[BR_MCAST_DIR_SIZE];
-       __u64 mld_v2queries[BR_MCAST_DIR_SIZE];
-       __u64 mld_leaves[BR_MCAST_DIR_SIZE];
-       __u64 mld_v1reports[BR_MCAST_DIR_SIZE];
-       __u64 mld_v2reports[BR_MCAST_DIR_SIZE];
-       __u64 mld_parse_errors;
-
-       __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
-       __u64 mcast_packets[BR_MCAST_DIR_SIZE];
-};
-#endif /* _LINUX_IF_BRIDGE_H */
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
deleted file mode 100644 (file)
index 8c36f63..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the Ethernet IEEE 802.3 interface.
- *
- * Version:    @(#)if_ether.h  1.0.1a  02/08/94
- *
- * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Donald Becker, <becker@super.org>
- *             Alan Cox, <alan@lxorguk.ukuu.org.uk>
- *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_IF_ETHER_H
-#define _LINUX_IF_ETHER_H
-
-#include <linux/types.h>
-
-/*
- *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
- *     and FCS/CRC (frame check sequence).
- */
-
-#define ETH_ALEN       6               /* Octets in one ethernet addr   */
-#define ETH_TLEN       2               /* Octets in ethernet type field */
-#define ETH_HLEN       14              /* Total octets in header.       */
-#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
-#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
-#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
-#define ETH_FCS_LEN    4               /* Octets in the FCS             */
-
-#define ETH_MIN_MTU    68              /* Min IPv4 MTU per RFC791      */
-#define ETH_MAX_MTU    0xFFFFU         /* 65535, same as IP_MAX_MTU    */
-
-/*
- *     These are the defined Ethernet Protocol ID's.
- */
-
-#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
-#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
-#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
-#define ETH_P_TSN      0x22F0          /* TSN (IEEE 1722) packet       */
-#define ETH_P_ERSPAN2  0x22EB          /* ERSPAN version 2 (type III)  */
-#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
-#define ETH_P_X25      0x0805          /* CCITT X.25                   */
-#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
-#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
-#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
-#define ETH_P_BATMAN   0x4305          /* B.A.T.M.A.N.-Advanced packet [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
-#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
-#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
-#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
-#define ETH_P_LAT       0x6004          /* DEC LAT                      */
-#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
-#define ETH_P_CUST      0x6006          /* DEC Customer use             */
-#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
-#define ETH_P_TEB      0x6558          /* Trans Ether Bridging         */
-#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
-#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
-#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
-#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
-#define ETH_P_ERSPAN   0x88BE          /* ERSPAN type II               */
-#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
-#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
-#define ETH_P_PAUSE    0x8808          /* IEEE Pause frames. See 802.3 31B */
-#define ETH_P_SLOW     0x8809          /* Slow Protocol. See 802.3ad 43B */
-#define ETH_P_WCCP     0x883E          /* Web-cache coordination protocol
-                                        * defined in draft-wilson-wrec-wccp-v2-00.txt */
-#define ETH_P_MPLS_UC  0x8847          /* MPLS Unicast traffic         */
-#define ETH_P_MPLS_MC  0x8848          /* MPLS Multicast traffic       */
-#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
-#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
-#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
-#define ETH_P_LINK_CTL 0x886c          /* HPNA, wlan link local tunnel */
-#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
-                                        * over Ethernet
-                                        */
-#define ETH_P_PAE      0x888E          /* Port Access Entity (IEEE 802.1X) */
-#define ETH_P_AOE      0x88A2          /* ATA over Ethernet            */
-#define ETH_P_8021AD   0x88A8          /* 802.1ad Service VLAN         */
-#define ETH_P_802_EX1  0x88B5          /* 802.1 Local Experimental 1.  */
-#define ETH_P_PREAUTH  0x88C7          /* 802.11 Preauthentication */
-#define ETH_P_TIPC     0x88CA          /* TIPC                         */
-#define ETH_P_MACSEC   0x88E5          /* 802.1ae MACsec */
-#define ETH_P_8021AH   0x88E7          /* 802.1ah Backbone Service Tag */
-#define ETH_P_MVRP     0x88F5          /* 802.1Q MVRP                  */
-#define ETH_P_1588     0x88F7          /* IEEE 1588 Timesync */
-#define ETH_P_NCSI     0x88F8          /* NCSI protocol                */
-#define ETH_P_PRP      0x88FB          /* IEC 62439-3 PRP/HSRv0        */
-#define ETH_P_FCOE     0x8906          /* Fibre Channel over Ethernet  */
-#define ETH_P_IBOE     0x8915          /* Infiniband over Ethernet     */
-#define ETH_P_TDLS     0x890D          /* TDLS */
-#define ETH_P_FIP      0x8914          /* FCoE Initialization Protocol */
-#define ETH_P_80221    0x8917          /* IEEE 802.21 Media Independent Handover Protocol */
-#define ETH_P_HSR      0x892F          /* IEC 62439-3 HSRv1    */
-#define ETH_P_NSH      0x894F          /* Network Service Header */
-#define ETH_P_LOOPBACK 0x9000          /* Ethernet loopback packet, per IEEE 802.3 */
-#define ETH_P_QINQ1    0x9100          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_QINQ2    0x9200          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_QINQ3    0x9300          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_EDSA     0xDADA          /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IFE      0xED3E          /* ForCES inter-FE LFB type */
-#define ETH_P_AF_IUCV   0xFBFB         /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
-
-#define ETH_P_802_3_MIN        0x0600          /* If the value in the ethernet type is less than this value
-                                        * then the frame is Ethernet II. Else it is 802.3 */
-
-/*
- *     Non DIX types. Won't clash for 1500 types.
- */
-
-#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
-#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
-#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
-#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
-#define ETH_P_SNAP     0x0005          /* Internal only                */
-#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
-#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
-#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
-#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
-#define ETH_P_CAN      0x000C          /* CAN: Controller Area Network */
-#define ETH_P_CANFD    0x000D          /* CANFD: CAN flexible data rate*/
-#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
-#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
-#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
-#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
-#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
-#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
-#define ETH_P_HDLC     0x0019          /* HDLC frames                  */
-#define ETH_P_ARCNET   0x001A          /* 1A for ArcNet :-)            */
-#define ETH_P_DSA      0x001B          /* Distributed Switch Arch.     */
-#define ETH_P_TRAILER  0x001C          /* Trailer switch tagging       */
-#define ETH_P_PHONET   0x00F5          /* Nokia Phonet frames          */
-#define ETH_P_IEEE802154 0x00F6                /* IEEE802.15.4 frame           */
-#define ETH_P_CAIF     0x00F7          /* ST-Ericsson CAIF protocol    */
-#define ETH_P_XDSA     0x00F8          /* Multiplexed DSA protocol     */
-#define ETH_P_MAP      0x00F9          /* Qualcomm multiplexing and
-                                        * aggregation protocol
-                                        */
-
-/*
- *     This is an Ethernet frame header.
- */
-
-/* allow libcs like musl to deactivate this, glibc does not implement this. */
-#ifndef __UAPI_DEF_ETHHDR
-#define __UAPI_DEF_ETHHDR              1
-#endif
-
-#if __UAPI_DEF_ETHHDR
-struct ethhdr {
-       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
-       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
-       __be16          h_proto;                /* packet type ID field */
-} __attribute__((packed));
-#endif
-
-
-#endif /* _LINUX_IF_ETHER_H */
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
deleted file mode 100644 (file)
index f4a9715..0000000
+++ /dev/null
@@ -1,1000 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _LINUX_IF_LINK_H
-#define _LINUX_IF_LINK_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-/* This struct should be in sync with struct rtnl_link_stats64 */
-struct rtnl_link_stats {
-       __u32   rx_packets;             /* total packets received       */
-       __u32   tx_packets;             /* total packets transmitted    */
-       __u32   rx_bytes;               /* total bytes received         */
-       __u32   tx_bytes;               /* total bytes transmitted      */
-       __u32   rx_errors;              /* bad packets received         */
-       __u32   tx_errors;              /* packet transmit problems     */
-       __u32   rx_dropped;             /* no space in linux buffers    */
-       __u32   tx_dropped;             /* no space available in linux  */
-       __u32   multicast;              /* multicast packets received   */
-       __u32   collisions;
-
-       /* detailed rx_errors: */
-       __u32   rx_length_errors;
-       __u32   rx_over_errors;         /* receiver ring buff overflow  */
-       __u32   rx_crc_errors;          /* recved pkt with crc error    */
-       __u32   rx_frame_errors;        /* recv'd frame alignment error */
-       __u32   rx_fifo_errors;         /* recv'r fifo overrun          */
-       __u32   rx_missed_errors;       /* receiver missed packet       */
-
-       /* detailed tx_errors */
-       __u32   tx_aborted_errors;
-       __u32   tx_carrier_errors;
-       __u32   tx_fifo_errors;
-       __u32   tx_heartbeat_errors;
-       __u32   tx_window_errors;
-
-       /* for cslip etc */
-       __u32   rx_compressed;
-       __u32   tx_compressed;
-
-       __u32   rx_nohandler;           /* dropped, no handler found    */
-};
-
-/* The main device statistics structure */
-struct rtnl_link_stats64 {
-       __u64   rx_packets;             /* total packets received       */
-       __u64   tx_packets;             /* total packets transmitted    */
-       __u64   rx_bytes;               /* total bytes received         */
-       __u64   tx_bytes;               /* total bytes transmitted      */
-       __u64   rx_errors;              /* bad packets received         */
-       __u64   tx_errors;              /* packet transmit problems     */
-       __u64   rx_dropped;             /* no space in linux buffers    */
-       __u64   tx_dropped;             /* no space available in linux  */
-       __u64   multicast;              /* multicast packets received   */
-       __u64   collisions;
-
-       /* detailed rx_errors: */
-       __u64   rx_length_errors;
-       __u64   rx_over_errors;         /* receiver ring buff overflow  */
-       __u64   rx_crc_errors;          /* recved pkt with crc error    */
-       __u64   rx_frame_errors;        /* recv'd frame alignment error */
-       __u64   rx_fifo_errors;         /* recv'r fifo overrun          */
-       __u64   rx_missed_errors;       /* receiver missed packet       */
-
-       /* detailed tx_errors */
-       __u64   tx_aborted_errors;
-       __u64   tx_carrier_errors;
-       __u64   tx_fifo_errors;
-       __u64   tx_heartbeat_errors;
-       __u64   tx_window_errors;
-
-       /* for cslip etc */
-       __u64   rx_compressed;
-       __u64   tx_compressed;
-
-       __u64   rx_nohandler;           /* dropped, no handler found    */
-};
-
-/* The struct should be in sync with struct ifmap */
-struct rtnl_link_ifmap {
-       __u64   mem_start;
-       __u64   mem_end;
-       __u64   base_addr;
-       __u16   irq;
-       __u8    dma;
-       __u8    port;
-};
-
-/*
- * IFLA_AF_SPEC
- *   Contains nested attributes for address family specific attributes.
- *   Each address family may create a attribute with the address family
- *   number as type and create its own attribute structure in it.
- *
- *   Example:
- *   [IFLA_AF_SPEC] = {
- *       [AF_INET] = {
- *           [IFLA_INET_CONF] = ...,
- *       },
- *       [AF_INET6] = {
- *           [IFLA_INET6_FLAGS] = ...,
- *           [IFLA_INET6_CONF] = ...,
- *       }
- *   }
- */
-
-enum {
-       IFLA_UNSPEC,
-       IFLA_ADDRESS,
-       IFLA_BROADCAST,
-       IFLA_IFNAME,
-       IFLA_MTU,
-       IFLA_LINK,
-       IFLA_QDISC,
-       IFLA_STATS,
-       IFLA_COST,
-#define IFLA_COST IFLA_COST
-       IFLA_PRIORITY,
-#define IFLA_PRIORITY IFLA_PRIORITY
-       IFLA_MASTER,
-#define IFLA_MASTER IFLA_MASTER
-       IFLA_WIRELESS,          /* Wireless Extension event - see wireless.h */
-#define IFLA_WIRELESS IFLA_WIRELESS
-       IFLA_PROTINFO,          /* Protocol specific information for a link */
-#define IFLA_PROTINFO IFLA_PROTINFO
-       IFLA_TXQLEN,
-#define IFLA_TXQLEN IFLA_TXQLEN
-       IFLA_MAP,
-#define IFLA_MAP IFLA_MAP
-       IFLA_WEIGHT,
-#define IFLA_WEIGHT IFLA_WEIGHT
-       IFLA_OPERSTATE,
-       IFLA_LINKMODE,
-       IFLA_LINKINFO,
-#define IFLA_LINKINFO IFLA_LINKINFO
-       IFLA_NET_NS_PID,
-       IFLA_IFALIAS,
-       IFLA_NUM_VF,            /* Number of VFs if device is SR-IOV PF */
-       IFLA_VFINFO_LIST,
-       IFLA_STATS64,
-       IFLA_VF_PORTS,
-       IFLA_PORT_SELF,
-       IFLA_AF_SPEC,
-       IFLA_GROUP,             /* Group the device belongs to */
-       IFLA_NET_NS_FD,
-       IFLA_EXT_MASK,          /* Extended info mask, VFs, etc */
-       IFLA_PROMISCUITY,       /* Promiscuity count: > 0 means acts PROMISC */
-#define IFLA_PROMISCUITY IFLA_PROMISCUITY
-       IFLA_NUM_TX_QUEUES,
-       IFLA_NUM_RX_QUEUES,
-       IFLA_CARRIER,
-       IFLA_PHYS_PORT_ID,
-       IFLA_CARRIER_CHANGES,
-       IFLA_PHYS_SWITCH_ID,
-       IFLA_LINK_NETNSID,
-       IFLA_PHYS_PORT_NAME,
-       IFLA_PROTO_DOWN,
-       IFLA_GSO_MAX_SEGS,
-       IFLA_GSO_MAX_SIZE,
-       IFLA_PAD,
-       IFLA_XDP,
-       IFLA_EVENT,
-       IFLA_NEW_NETNSID,
-       IFLA_IF_NETNSID,
-       IFLA_CARRIER_UP_COUNT,
-       IFLA_CARRIER_DOWN_COUNT,
-       IFLA_NEW_IFINDEX,
-       IFLA_MIN_MTU,
-       IFLA_MAX_MTU,
-       __IFLA_MAX
-};
-
-
-#define IFLA_MAX (__IFLA_MAX - 1)
-
-/* backwards compatibility for userspace */
-#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
-#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
-
-enum {
-       IFLA_INET_UNSPEC,
-       IFLA_INET_CONF,
-       __IFLA_INET_MAX,
-};
-
-#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
-
-/* ifi_flags.
-
-   IFF_* flags.
-
-   The only change is:
-   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
-   more not changeable by user. They describe link media
-   characteristics and set by device driver.
-
-   Comments:
-   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
-   - If neither of these three flags are set;
-     the interface is NBMA.
-
-   - IFF_MULTICAST does not mean anything special:
-   multicasts can be used on all not-NBMA links.
-   IFF_MULTICAST means that this media uses special encapsulation
-   for multicast frames. Apparently, all IFF_POINTOPOINT and
-   IFF_BROADCAST devices are able to use multicasts too.
- */
-
-/* IFLA_LINK.
-   For usual devices it is equal ifi_index.
-   If it is a "virtual interface" (f.e. tunnel), ifi_link
-   can point to real physical interface (f.e. for bandwidth calculations),
-   or maybe 0, what means, that real media is unknown (usual
-   for IPIP tunnels, when route to endpoint is allowed to change)
- */
-
-/* Subtype attributes for IFLA_PROTINFO */
-enum {
-       IFLA_INET6_UNSPEC,
-       IFLA_INET6_FLAGS,       /* link flags                   */
-       IFLA_INET6_CONF,        /* sysctl parameters            */
-       IFLA_INET6_STATS,       /* statistics                   */
-       IFLA_INET6_MCAST,       /* MC things. What of them?     */
-       IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
-       IFLA_INET6_ICMP6STATS,  /* statistics (icmpv6)          */
-       IFLA_INET6_TOKEN,       /* device token                 */
-       IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
-       __IFLA_INET6_MAX
-};
-
-#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
-
-enum in6_addr_gen_mode {
-       IN6_ADDR_GEN_MODE_EUI64,
-       IN6_ADDR_GEN_MODE_NONE,
-       IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
-       IN6_ADDR_GEN_MODE_RANDOM,
-};
-
-/* Bridge section */
-
-enum {
-       IFLA_BR_UNSPEC,
-       IFLA_BR_FORWARD_DELAY,
-       IFLA_BR_HELLO_TIME,
-       IFLA_BR_MAX_AGE,
-       IFLA_BR_AGEING_TIME,
-       IFLA_BR_STP_STATE,
-       IFLA_BR_PRIORITY,
-       IFLA_BR_VLAN_FILTERING,
-       IFLA_BR_VLAN_PROTOCOL,
-       IFLA_BR_GROUP_FWD_MASK,
-       IFLA_BR_ROOT_ID,
-       IFLA_BR_BRIDGE_ID,
-       IFLA_BR_ROOT_PORT,
-       IFLA_BR_ROOT_PATH_COST,
-       IFLA_BR_TOPOLOGY_CHANGE,
-       IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
-       IFLA_BR_HELLO_TIMER,
-       IFLA_BR_TCN_TIMER,
-       IFLA_BR_TOPOLOGY_CHANGE_TIMER,
-       IFLA_BR_GC_TIMER,
-       IFLA_BR_GROUP_ADDR,
-       IFLA_BR_FDB_FLUSH,
-       IFLA_BR_MCAST_ROUTER,
-       IFLA_BR_MCAST_SNOOPING,
-       IFLA_BR_MCAST_QUERY_USE_IFADDR,
-       IFLA_BR_MCAST_QUERIER,
-       IFLA_BR_MCAST_HASH_ELASTICITY,
-       IFLA_BR_MCAST_HASH_MAX,
-       IFLA_BR_MCAST_LAST_MEMBER_CNT,
-       IFLA_BR_MCAST_STARTUP_QUERY_CNT,
-       IFLA_BR_MCAST_LAST_MEMBER_INTVL,
-       IFLA_BR_MCAST_MEMBERSHIP_INTVL,
-       IFLA_BR_MCAST_QUERIER_INTVL,
-       IFLA_BR_MCAST_QUERY_INTVL,
-       IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
-       IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
-       IFLA_BR_NF_CALL_IPTABLES,
-       IFLA_BR_NF_CALL_IP6TABLES,
-       IFLA_BR_NF_CALL_ARPTABLES,
-       IFLA_BR_VLAN_DEFAULT_PVID,
-       IFLA_BR_PAD,
-       IFLA_BR_VLAN_STATS_ENABLED,
-       IFLA_BR_MCAST_STATS_ENABLED,
-       IFLA_BR_MCAST_IGMP_VERSION,
-       IFLA_BR_MCAST_MLD_VERSION,
-       __IFLA_BR_MAX,
-};
-
-#define IFLA_BR_MAX    (__IFLA_BR_MAX - 1)
-
-struct ifla_bridge_id {
-       __u8    prio[2];
-       __u8    addr[6]; /* ETH_ALEN */
-};
-
-enum {
-       BRIDGE_MODE_UNSPEC,
-       BRIDGE_MODE_HAIRPIN,
-};
-
-enum {
-       IFLA_BRPORT_UNSPEC,
-       IFLA_BRPORT_STATE,      /* Spanning tree state     */
-       IFLA_BRPORT_PRIORITY,   /* "             priority  */
-       IFLA_BRPORT_COST,       /* "             cost      */
-       IFLA_BRPORT_MODE,       /* mode (hairpin)          */
-       IFLA_BRPORT_GUARD,      /* bpdu guard              */
-       IFLA_BRPORT_PROTECT,    /* root port protection    */
-       IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave    */
-       IFLA_BRPORT_LEARNING,   /* mac learning */
-       IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
-       IFLA_BRPORT_PROXYARP,   /* proxy ARP */
-       IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
-       IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
-       IFLA_BRPORT_ROOT_ID,    /* designated root */
-       IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
-       IFLA_BRPORT_DESIGNATED_PORT,
-       IFLA_BRPORT_DESIGNATED_COST,
-       IFLA_BRPORT_ID,
-       IFLA_BRPORT_NO,
-       IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
-       IFLA_BRPORT_CONFIG_PENDING,
-       IFLA_BRPORT_MESSAGE_AGE_TIMER,
-       IFLA_BRPORT_FORWARD_DELAY_TIMER,
-       IFLA_BRPORT_HOLD_TIMER,
-       IFLA_BRPORT_FLUSH,
-       IFLA_BRPORT_MULTICAST_ROUTER,
-       IFLA_BRPORT_PAD,
-       IFLA_BRPORT_MCAST_FLOOD,
-       IFLA_BRPORT_MCAST_TO_UCAST,
-       IFLA_BRPORT_VLAN_TUNNEL,
-       IFLA_BRPORT_BCAST_FLOOD,
-       IFLA_BRPORT_GROUP_FWD_MASK,
-       IFLA_BRPORT_NEIGH_SUPPRESS,
-       IFLA_BRPORT_ISOLATED,
-       IFLA_BRPORT_BACKUP_PORT,
-       __IFLA_BRPORT_MAX
-};
-#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
-
-struct ifla_cacheinfo {
-       __u32   max_reasm_len;
-       __u32   tstamp;         /* ipv6InterfaceTable updated timestamp */
-       __u32   reachable_time;
-       __u32   retrans_time;
-};
-
-enum {
-       IFLA_INFO_UNSPEC,
-       IFLA_INFO_KIND,
-       IFLA_INFO_DATA,
-       IFLA_INFO_XSTATS,
-       IFLA_INFO_SLAVE_KIND,
-       IFLA_INFO_SLAVE_DATA,
-       __IFLA_INFO_MAX,
-};
-
-#define IFLA_INFO_MAX  (__IFLA_INFO_MAX - 1)
-
-/* VLAN section */
-
-enum {
-       IFLA_VLAN_UNSPEC,
-       IFLA_VLAN_ID,
-       IFLA_VLAN_FLAGS,
-       IFLA_VLAN_EGRESS_QOS,
-       IFLA_VLAN_INGRESS_QOS,
-       IFLA_VLAN_PROTOCOL,
-       __IFLA_VLAN_MAX,
-};
-
-#define IFLA_VLAN_MAX  (__IFLA_VLAN_MAX - 1)
-
-struct ifla_vlan_flags {
-       __u32   flags;
-       __u32   mask;
-};
-
-enum {
-       IFLA_VLAN_QOS_UNSPEC,
-       IFLA_VLAN_QOS_MAPPING,
-       __IFLA_VLAN_QOS_MAX
-};
-
-#define IFLA_VLAN_QOS_MAX      (__IFLA_VLAN_QOS_MAX - 1)
-
-struct ifla_vlan_qos_mapping {
-       __u32 from;
-       __u32 to;
-};
-
-/* MACVLAN section */
-enum {
-       IFLA_MACVLAN_UNSPEC,
-       IFLA_MACVLAN_MODE,
-       IFLA_MACVLAN_FLAGS,
-       IFLA_MACVLAN_MACADDR_MODE,
-       IFLA_MACVLAN_MACADDR,
-       IFLA_MACVLAN_MACADDR_DATA,
-       IFLA_MACVLAN_MACADDR_COUNT,
-       __IFLA_MACVLAN_MAX,
-};
-
-#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
-
-enum macvlan_mode {
-       MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
-       MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
-       MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
-       MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
-       MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
-};
-
-enum macvlan_macaddr_mode {
-       MACVLAN_MACADDR_ADD,
-       MACVLAN_MACADDR_DEL,
-       MACVLAN_MACADDR_FLUSH,
-       MACVLAN_MACADDR_SET,
-};
-
-#define MACVLAN_FLAG_NOPROMISC 1
-
-/* VRF section */
-enum {
-       IFLA_VRF_UNSPEC,
-       IFLA_VRF_TABLE,
-       __IFLA_VRF_MAX
-};
-
-#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
-
-enum {
-       IFLA_VRF_PORT_UNSPEC,
-       IFLA_VRF_PORT_TABLE,
-       __IFLA_VRF_PORT_MAX
-};
-
-#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
-
-/* MACSEC section */
-enum {
-       IFLA_MACSEC_UNSPEC,
-       IFLA_MACSEC_SCI,
-       IFLA_MACSEC_PORT,
-       IFLA_MACSEC_ICV_LEN,
-       IFLA_MACSEC_CIPHER_SUITE,
-       IFLA_MACSEC_WINDOW,
-       IFLA_MACSEC_ENCODING_SA,
-       IFLA_MACSEC_ENCRYPT,
-       IFLA_MACSEC_PROTECT,
-       IFLA_MACSEC_INC_SCI,
-       IFLA_MACSEC_ES,
-       IFLA_MACSEC_SCB,
-       IFLA_MACSEC_REPLAY_PROTECT,
-       IFLA_MACSEC_VALIDATION,
-       IFLA_MACSEC_PAD,
-       __IFLA_MACSEC_MAX,
-};
-
-#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
-
-/* XFRM section */
-enum {
-       IFLA_XFRM_UNSPEC,
-       IFLA_XFRM_LINK,
-       IFLA_XFRM_IF_ID,
-       __IFLA_XFRM_MAX
-};
-
-#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
-
-enum macsec_validation_type {
-       MACSEC_VALIDATE_DISABLED = 0,
-       MACSEC_VALIDATE_CHECK = 1,
-       MACSEC_VALIDATE_STRICT = 2,
-       __MACSEC_VALIDATE_END,
-       MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
-};
-
-/* IPVLAN section */
-enum {
-       IFLA_IPVLAN_UNSPEC,
-       IFLA_IPVLAN_MODE,
-       IFLA_IPVLAN_FLAGS,
-       __IFLA_IPVLAN_MAX
-};
-
-#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
-
-enum ipvlan_mode {
-       IPVLAN_MODE_L2 = 0,
-       IPVLAN_MODE_L3,
-       IPVLAN_MODE_L3S,
-       IPVLAN_MODE_MAX
-};
-
-#define IPVLAN_F_PRIVATE       0x01
-#define IPVLAN_F_VEPA          0x02
-
-/* VXLAN section */
-enum {
-       IFLA_VXLAN_UNSPEC,
-       IFLA_VXLAN_ID,
-       IFLA_VXLAN_GROUP,       /* group or remote address */
-       IFLA_VXLAN_LINK,
-       IFLA_VXLAN_LOCAL,
-       IFLA_VXLAN_TTL,
-       IFLA_VXLAN_TOS,
-       IFLA_VXLAN_LEARNING,
-       IFLA_VXLAN_AGEING,
-       IFLA_VXLAN_LIMIT,
-       IFLA_VXLAN_PORT_RANGE,  /* source port */
-       IFLA_VXLAN_PROXY,
-       IFLA_VXLAN_RSC,
-       IFLA_VXLAN_L2MISS,
-       IFLA_VXLAN_L3MISS,
-       IFLA_VXLAN_PORT,        /* destination port */
-       IFLA_VXLAN_GROUP6,
-       IFLA_VXLAN_LOCAL6,
-       IFLA_VXLAN_UDP_CSUM,
-       IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
-       IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
-       IFLA_VXLAN_REMCSUM_TX,
-       IFLA_VXLAN_REMCSUM_RX,
-       IFLA_VXLAN_GBP,
-       IFLA_VXLAN_REMCSUM_NOPARTIAL,
-       IFLA_VXLAN_COLLECT_METADATA,
-       IFLA_VXLAN_LABEL,
-       IFLA_VXLAN_GPE,
-       IFLA_VXLAN_TTL_INHERIT,
-       __IFLA_VXLAN_MAX
-};
-#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
-
-struct ifla_vxlan_port_range {
-       __be16  low;
-       __be16  high;
-};
-
-/* GENEVE section */
-enum {
-       IFLA_GENEVE_UNSPEC,
-       IFLA_GENEVE_ID,
-       IFLA_GENEVE_REMOTE,
-       IFLA_GENEVE_TTL,
-       IFLA_GENEVE_TOS,
-       IFLA_GENEVE_PORT,       /* destination port */
-       IFLA_GENEVE_COLLECT_METADATA,
-       IFLA_GENEVE_REMOTE6,
-       IFLA_GENEVE_UDP_CSUM,
-       IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
-       IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
-       IFLA_GENEVE_LABEL,
-       __IFLA_GENEVE_MAX
-};
-#define IFLA_GENEVE_MAX        (__IFLA_GENEVE_MAX - 1)
-
-/* PPP section */
-enum {
-       IFLA_PPP_UNSPEC,
-       IFLA_PPP_DEV_FD,
-       __IFLA_PPP_MAX
-};
-#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
-
-/* GTP section */
-
-enum ifla_gtp_role {
-       GTP_ROLE_GGSN = 0,
-       GTP_ROLE_SGSN,
-};
-
-enum {
-       IFLA_GTP_UNSPEC,
-       IFLA_GTP_FD0,
-       IFLA_GTP_FD1,
-       IFLA_GTP_PDP_HASHSIZE,
-       IFLA_GTP_ROLE,
-       __IFLA_GTP_MAX,
-};
-#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
-
-/* Bonding section */
-
-enum {
-       IFLA_BOND_UNSPEC,
-       IFLA_BOND_MODE,
-       IFLA_BOND_ACTIVE_SLAVE,
-       IFLA_BOND_MIIMON,
-       IFLA_BOND_UPDELAY,
-       IFLA_BOND_DOWNDELAY,
-       IFLA_BOND_USE_CARRIER,
-       IFLA_BOND_ARP_INTERVAL,
-       IFLA_BOND_ARP_IP_TARGET,
-       IFLA_BOND_ARP_VALIDATE,
-       IFLA_BOND_ARP_ALL_TARGETS,
-       IFLA_BOND_PRIMARY,
-       IFLA_BOND_PRIMARY_RESELECT,
-       IFLA_BOND_FAIL_OVER_MAC,
-       IFLA_BOND_XMIT_HASH_POLICY,
-       IFLA_BOND_RESEND_IGMP,
-       IFLA_BOND_NUM_PEER_NOTIF,
-       IFLA_BOND_ALL_SLAVES_ACTIVE,
-       IFLA_BOND_MIN_LINKS,
-       IFLA_BOND_LP_INTERVAL,
-       IFLA_BOND_PACKETS_PER_SLAVE,
-       IFLA_BOND_AD_LACP_RATE,
-       IFLA_BOND_AD_SELECT,
-       IFLA_BOND_AD_INFO,
-       IFLA_BOND_AD_ACTOR_SYS_PRIO,
-       IFLA_BOND_AD_USER_PORT_KEY,
-       IFLA_BOND_AD_ACTOR_SYSTEM,
-       IFLA_BOND_TLB_DYNAMIC_LB,
-       __IFLA_BOND_MAX,
-};
-
-#define IFLA_BOND_MAX  (__IFLA_BOND_MAX - 1)
-
-enum {
-       IFLA_BOND_AD_INFO_UNSPEC,
-       IFLA_BOND_AD_INFO_AGGREGATOR,
-       IFLA_BOND_AD_INFO_NUM_PORTS,
-       IFLA_BOND_AD_INFO_ACTOR_KEY,
-       IFLA_BOND_AD_INFO_PARTNER_KEY,
-       IFLA_BOND_AD_INFO_PARTNER_MAC,
-       __IFLA_BOND_AD_INFO_MAX,
-};
-
-#define IFLA_BOND_AD_INFO_MAX  (__IFLA_BOND_AD_INFO_MAX - 1)
-
-enum {
-       IFLA_BOND_SLAVE_UNSPEC,
-       IFLA_BOND_SLAVE_STATE,
-       IFLA_BOND_SLAVE_MII_STATUS,
-       IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
-       IFLA_BOND_SLAVE_PERM_HWADDR,
-       IFLA_BOND_SLAVE_QUEUE_ID,
-       IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
-       IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
-       IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
-       __IFLA_BOND_SLAVE_MAX,
-};
-
-#define IFLA_BOND_SLAVE_MAX    (__IFLA_BOND_SLAVE_MAX - 1)
-
-/* SR-IOV virtual function management section */
-
-enum {
-       IFLA_VF_INFO_UNSPEC,
-       IFLA_VF_INFO,
-       __IFLA_VF_INFO_MAX,
-};
-
-#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
-
-enum {
-       IFLA_VF_UNSPEC,
-       IFLA_VF_MAC,            /* Hardware queue specific attributes */
-       IFLA_VF_VLAN,           /* VLAN ID and QoS */
-       IFLA_VF_TX_RATE,        /* Max TX Bandwidth Allocation */
-       IFLA_VF_SPOOFCHK,       /* Spoof Checking on/off switch */
-       IFLA_VF_LINK_STATE,     /* link state enable/disable/auto switch */
-       IFLA_VF_RATE,           /* Min and Max TX Bandwidth Allocation */
-       IFLA_VF_RSS_QUERY_EN,   /* RSS Redirection Table and Hash Key query
-                                * on/off switch
-                                */
-       IFLA_VF_STATS,          /* network device statistics */
-       IFLA_VF_TRUST,          /* Trust VF */
-       IFLA_VF_IB_NODE_GUID,   /* VF Infiniband node GUID */
-       IFLA_VF_IB_PORT_GUID,   /* VF Infiniband port GUID */
-       IFLA_VF_VLAN_LIST,      /* nested list of vlans, option for QinQ */
-       __IFLA_VF_MAX,
-};
-
-#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
-
-struct ifla_vf_mac {
-       __u32 vf;
-       __u8 mac[32]; /* MAX_ADDR_LEN */
-};
-
-struct ifla_vf_vlan {
-       __u32 vf;
-       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
-       __u32 qos;
-};
-
-enum {
-       IFLA_VF_VLAN_INFO_UNSPEC,
-       IFLA_VF_VLAN_INFO,      /* VLAN ID, QoS and VLAN protocol */
-       __IFLA_VF_VLAN_INFO_MAX,
-};
-
-#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
-#define MAX_VLAN_LIST_LEN 1
-
-struct ifla_vf_vlan_info {
-       __u32 vf;
-       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
-       __u32 qos;
-       __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
-};
-
-struct ifla_vf_tx_rate {
-       __u32 vf;
-       __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
-};
-
-struct ifla_vf_rate {
-       __u32 vf;
-       __u32 min_tx_rate; /* Min Bandwidth in Mbps */
-       __u32 max_tx_rate; /* Max Bandwidth in Mbps */
-};
-
-struct ifla_vf_spoofchk {
-       __u32 vf;
-       __u32 setting;
-};
-
-struct ifla_vf_guid {
-       __u32 vf;
-       __u64 guid;
-};
-
-enum {
-       IFLA_VF_LINK_STATE_AUTO,        /* link state of the uplink */
-       IFLA_VF_LINK_STATE_ENABLE,      /* link always up */
-       IFLA_VF_LINK_STATE_DISABLE,     /* link always down */
-       __IFLA_VF_LINK_STATE_MAX,
-};
-
-struct ifla_vf_link_state {
-       __u32 vf;
-       __u32 link_state;
-};
-
-struct ifla_vf_rss_query_en {
-       __u32 vf;
-       __u32 setting;
-};
-
-enum {
-       IFLA_VF_STATS_RX_PACKETS,
-       IFLA_VF_STATS_TX_PACKETS,
-       IFLA_VF_STATS_RX_BYTES,
-       IFLA_VF_STATS_TX_BYTES,
-       IFLA_VF_STATS_BROADCAST,
-       IFLA_VF_STATS_MULTICAST,
-       IFLA_VF_STATS_PAD,
-       IFLA_VF_STATS_RX_DROPPED,
-       IFLA_VF_STATS_TX_DROPPED,
-       __IFLA_VF_STATS_MAX,
-};
-
-#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
-
-struct ifla_vf_trust {
-       __u32 vf;
-       __u32 setting;
-};
-
-/* VF ports management section
- *
- *     Nested layout of set/get msg is:
- *
- *             [IFLA_NUM_VF]
- *             [IFLA_VF_PORTS]
- *                     [IFLA_VF_PORT]
- *                             [IFLA_PORT_*], ...
- *                     [IFLA_VF_PORT]
- *                             [IFLA_PORT_*], ...
- *                     ...
- *             [IFLA_PORT_SELF]
- *                     [IFLA_PORT_*], ...
- */
-
-enum {
-       IFLA_VF_PORT_UNSPEC,
-       IFLA_VF_PORT,                   /* nest */
-       __IFLA_VF_PORT_MAX,
-};
-
-#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
-
-enum {
-       IFLA_PORT_UNSPEC,
-       IFLA_PORT_VF,                   /* __u32 */
-       IFLA_PORT_PROFILE,              /* string */
-       IFLA_PORT_VSI_TYPE,             /* 802.1Qbg (pre-)standard VDP */
-       IFLA_PORT_INSTANCE_UUID,        /* binary UUID */
-       IFLA_PORT_HOST_UUID,            /* binary UUID */
-       IFLA_PORT_REQUEST,              /* __u8 */
-       IFLA_PORT_RESPONSE,             /* __u16, output only */
-       __IFLA_PORT_MAX,
-};
-
-#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
-
-#define PORT_PROFILE_MAX       40
-#define PORT_UUID_MAX          16
-#define PORT_SELF_VF           -1
-
-enum {
-       PORT_REQUEST_PREASSOCIATE = 0,
-       PORT_REQUEST_PREASSOCIATE_RR,
-       PORT_REQUEST_ASSOCIATE,
-       PORT_REQUEST_DISASSOCIATE,
-};
-
-enum {
-       PORT_VDP_RESPONSE_SUCCESS = 0,
-       PORT_VDP_RESPONSE_INVALID_FORMAT,
-       PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
-       PORT_VDP_RESPONSE_UNUSED_VTID,
-       PORT_VDP_RESPONSE_VTID_VIOLATION,
-       PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
-       PORT_VDP_RESPONSE_OUT_OF_SYNC,
-       /* 0x08-0xFF reserved for future VDP use */
-       PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
-       PORT_PROFILE_RESPONSE_INPROGRESS,
-       PORT_PROFILE_RESPONSE_INVALID,
-       PORT_PROFILE_RESPONSE_BADSTATE,
-       PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
-       PORT_PROFILE_RESPONSE_ERROR,
-};
-
-struct ifla_port_vsi {
-       __u8 vsi_mgr_id;
-       __u8 vsi_type_id[3];
-       __u8 vsi_type_version;
-       __u8 pad[3];
-};
-
-
-/* IPoIB section */
-
-enum {
-       IFLA_IPOIB_UNSPEC,
-       IFLA_IPOIB_PKEY,
-       IFLA_IPOIB_MODE,
-       IFLA_IPOIB_UMCAST,
-       __IFLA_IPOIB_MAX
-};
-
-enum {
-       IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
-       IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
-};
-
-#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
-
-
-/* HSR section */
-
-enum {
-       IFLA_HSR_UNSPEC,
-       IFLA_HSR_SLAVE1,
-       IFLA_HSR_SLAVE2,
-       IFLA_HSR_MULTICAST_SPEC,        /* Last byte of supervision addr */
-       IFLA_HSR_SUPERVISION_ADDR,      /* Supervision frame multicast addr */
-       IFLA_HSR_SEQ_NR,
-       IFLA_HSR_VERSION,               /* HSR version */
-       __IFLA_HSR_MAX,
-};
-
-#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
-
-/* STATS section */
-
-struct if_stats_msg {
-       __u8  family;
-       __u8  pad1;
-       __u16 pad2;
-       __u32 ifindex;
-       __u32 filter_mask;
-};
-
-/* A stats attribute can be netdev specific or a global stat.
- * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
- */
-enum {
-       IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
-       IFLA_STATS_LINK_64,
-       IFLA_STATS_LINK_XSTATS,
-       IFLA_STATS_LINK_XSTATS_SLAVE,
-       IFLA_STATS_LINK_OFFLOAD_XSTATS,
-       IFLA_STATS_AF_SPEC,
-       __IFLA_STATS_MAX,
-};
-
-#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
-
-#define IFLA_STATS_FILTER_BIT(ATTR)    (1 << (ATTR - 1))
-
-/* These are embedded into IFLA_STATS_LINK_XSTATS:
- * [IFLA_STATS_LINK_XSTATS]
- * -> [LINK_XSTATS_TYPE_xxx]
- *    -> [rtnl link type specific attributes]
- */
-enum {
-       LINK_XSTATS_TYPE_UNSPEC,
-       LINK_XSTATS_TYPE_BRIDGE,
-       __LINK_XSTATS_TYPE_MAX
-};
-#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
-
-/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
-enum {
-       IFLA_OFFLOAD_XSTATS_UNSPEC,
-       IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
-       __IFLA_OFFLOAD_XSTATS_MAX
-};
-#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
-
-/* XDP section */
-
-#define XDP_FLAGS_UPDATE_IF_NOEXIST    (1U << 0)
-#define XDP_FLAGS_SKB_MODE             (1U << 1)
-#define XDP_FLAGS_DRV_MODE             (1U << 2)
-#define XDP_FLAGS_HW_MODE              (1U << 3)
-#define XDP_FLAGS_MODES                        (XDP_FLAGS_SKB_MODE | \
-                                        XDP_FLAGS_DRV_MODE | \
-                                        XDP_FLAGS_HW_MODE)
-#define XDP_FLAGS_MASK                 (XDP_FLAGS_UPDATE_IF_NOEXIST | \
-                                        XDP_FLAGS_MODES)
-
-/* These are stored into IFLA_XDP_ATTACHED on dump. */
-enum {
-       XDP_ATTACHED_NONE = 0,
-       XDP_ATTACHED_DRV,
-       XDP_ATTACHED_SKB,
-       XDP_ATTACHED_HW,
-       XDP_ATTACHED_MULTI,
-};
-
-enum {
-       IFLA_XDP_UNSPEC,
-       IFLA_XDP_FD,
-       IFLA_XDP_ATTACHED,
-       IFLA_XDP_FLAGS,
-       IFLA_XDP_PROG_ID,
-       IFLA_XDP_DRV_PROG_ID,
-       IFLA_XDP_SKB_PROG_ID,
-       IFLA_XDP_HW_PROG_ID,
-       __IFLA_XDP_MAX,
-};
-
-#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
-
-enum {
-       IFLA_EVENT_NONE,
-       IFLA_EVENT_REBOOT,              /* internal reset / reboot */
-       IFLA_EVENT_FEATURES,            /* change in offload features */
-       IFLA_EVENT_BONDING_FAILOVER,    /* change in active slave */
-       IFLA_EVENT_NOTIFY_PEERS,        /* re-sent grat. arp/ndisc */
-       IFLA_EVENT_IGMP_RESEND,         /* re-sent IGMP JOIN */
-       IFLA_EVENT_BONDING_OPTIONS,     /* change in bonding options */
-};
-
-/* tun section */
-
-enum {
-       IFLA_TUN_UNSPEC,
-       IFLA_TUN_OWNER,
-       IFLA_TUN_GROUP,
-       IFLA_TUN_TYPE,
-       IFLA_TUN_PI,
-       IFLA_TUN_VNET_HDR,
-       IFLA_TUN_PERSIST,
-       IFLA_TUN_MULTI_QUEUE,
-       IFLA_TUN_NUM_QUEUES,
-       IFLA_TUN_NUM_DISABLED_QUEUES,
-       __IFLA_TUN_MAX,
-};
-
-#define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
-
-/* rmnet section */
-
-#define RMNET_FLAGS_INGRESS_DEAGGREGATION         (1U << 0)
-#define RMNET_FLAGS_INGRESS_MAP_COMMANDS          (1U << 1)
-#define RMNET_FLAGS_INGRESS_MAP_CKSUMV4           (1U << 2)
-#define RMNET_FLAGS_EGRESS_MAP_CKSUMV4            (1U << 3)
-
-enum {
-       IFLA_RMNET_UNSPEC,
-       IFLA_RMNET_MUX_ID,
-       IFLA_RMNET_FLAGS,
-       __IFLA_RMNET_MAX,
-};
-
-#define IFLA_RMNET_MAX (__IFLA_RMNET_MAX - 1)
-
-struct ifla_rmnet_flags {
-       __u32   flags;
-       __u32   mask;
-};
-
-#endif /* _LINUX_IF_LINK_H */
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h
deleted file mode 100644 (file)
index 67b61d9..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_IF_PACKET_H
-#define __LINUX_IF_PACKET_H
-
-#include <linux/types.h>
-
-struct sockaddr_pkt {
-       unsigned short spkt_family;
-       unsigned char spkt_device[14];
-       __be16 spkt_protocol;
-};
-
-struct sockaddr_ll {
-       unsigned short  sll_family;
-       __be16          sll_protocol;
-       int             sll_ifindex;
-       unsigned short  sll_hatype;
-       unsigned char   sll_pkttype;
-       unsigned char   sll_halen;
-       unsigned char   sll_addr[8];
-};
-
-/* Packet types */
-
-#define PACKET_HOST            0               /* To us                */
-#define PACKET_BROADCAST       1               /* To all               */
-#define PACKET_MULTICAST       2               /* To group             */
-#define PACKET_OTHERHOST       3               /* To someone else      */
-#define PACKET_OUTGOING                4               /* Outgoing of any type */
-#define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
-#define PACKET_USER            6               /* To user space        */
-#define PACKET_KERNEL          7               /* To kernel space      */
-/* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
-#define PACKET_FASTROUTE       6               /* Fastrouted frame     */
-
-/* Packet socket options */
-
-#define PACKET_ADD_MEMBERSHIP          1
-#define PACKET_DROP_MEMBERSHIP         2
-#define PACKET_RECV_OUTPUT             3
-/* Value 4 is still used by obsolete turbo-packet. */
-#define PACKET_RX_RING                 5
-#define PACKET_STATISTICS              6
-#define PACKET_COPY_THRESH             7
-#define PACKET_AUXDATA                 8
-#define PACKET_ORIGDEV                 9
-#define PACKET_VERSION                 10
-#define PACKET_HDRLEN                  11
-#define PACKET_RESERVE                 12
-#define PACKET_TX_RING                 13
-#define PACKET_LOSS                    14
-#define PACKET_VNET_HDR                        15
-#define PACKET_TX_TIMESTAMP            16
-#define PACKET_TIMESTAMP               17
-#define PACKET_FANOUT                  18
-#define PACKET_TX_HAS_OFF              19
-#define PACKET_QDISC_BYPASS            20
-#define PACKET_ROLLOVER_STATS          21
-#define PACKET_FANOUT_DATA             22
-
-#define PACKET_FANOUT_HASH             0
-#define PACKET_FANOUT_LB               1
-#define PACKET_FANOUT_CPU              2
-#define PACKET_FANOUT_ROLLOVER         3
-#define PACKET_FANOUT_RND              4
-#define PACKET_FANOUT_QM               5
-#define PACKET_FANOUT_CBPF             6
-#define PACKET_FANOUT_EBPF             7
-#define PACKET_FANOUT_FLAG_ROLLOVER    0x1000
-#define PACKET_FANOUT_FLAG_UNIQUEID    0x2000
-#define PACKET_FANOUT_FLAG_DEFRAG      0x8000
-
-struct tpacket_stats {
-       unsigned int    tp_packets;
-       unsigned int    tp_drops;
-};
-
-struct tpacket_stats_v3 {
-       unsigned int    tp_packets;
-       unsigned int    tp_drops;
-       unsigned int    tp_freeze_q_cnt;
-};
-
-struct tpacket_rollover_stats {
-       __aligned_u64   tp_all;
-       __aligned_u64   tp_huge;
-       __aligned_u64   tp_failed;
-};
-
-union tpacket_stats_u {
-       struct tpacket_stats stats1;
-       struct tpacket_stats_v3 stats3;
-};
-
-struct tpacket_auxdata {
-       __u32           tp_status;
-       __u32           tp_len;
-       __u32           tp_snaplen;
-       __u16           tp_mac;
-       __u16           tp_net;
-       __u16           tp_vlan_tci;
-       __u16           tp_vlan_tpid;
-};
-
-/* Rx ring - header status */
-#define TP_STATUS_KERNEL                     0
-#define TP_STATUS_USER                 (1 << 0)
-#define TP_STATUS_COPY                 (1 << 1)
-#define TP_STATUS_LOSING               (1 << 2)
-#define TP_STATUS_CSUMNOTREADY         (1 << 3)
-#define TP_STATUS_VLAN_VALID           (1 << 4) /* auxdata has valid tp_vlan_tci */
-#define TP_STATUS_BLK_TMO              (1 << 5)
-#define TP_STATUS_VLAN_TPID_VALID      (1 << 6) /* auxdata has valid tp_vlan_tpid */
-#define TP_STATUS_CSUM_VALID           (1 << 7)
-
-/* Tx ring - header status */
-#define TP_STATUS_AVAILABLE          0
-#define TP_STATUS_SEND_REQUEST (1 << 0)
-#define TP_STATUS_SENDING      (1 << 1)
-#define TP_STATUS_WRONG_FORMAT (1 << 2)
-
-/* Rx and Tx ring - header status */
-#define TP_STATUS_TS_SOFTWARE          (1 << 29)
-#define TP_STATUS_TS_SYS_HARDWARE      (1 << 30) /* deprecated, never set */
-#define TP_STATUS_TS_RAW_HARDWARE      (1 << 31)
-
-/* Rx ring - feature request bits */
-#define TP_FT_REQ_FILL_RXHASH  0x1
-
-struct tpacket_hdr {
-       unsigned long   tp_status;
-       unsigned int    tp_len;
-       unsigned int    tp_snaplen;
-       unsigned short  tp_mac;
-       unsigned short  tp_net;
-       unsigned int    tp_sec;
-       unsigned int    tp_usec;
-};
-
-#define TPACKET_ALIGNMENT      16
-#define TPACKET_ALIGN(x)       (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
-#define TPACKET_HDRLEN         (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
-
-struct tpacket2_hdr {
-       __u32           tp_status;
-       __u32           tp_len;
-       __u32           tp_snaplen;
-       __u16           tp_mac;
-       __u16           tp_net;
-       __u32           tp_sec;
-       __u32           tp_nsec;
-       __u16           tp_vlan_tci;
-       __u16           tp_vlan_tpid;
-       __u8            tp_padding[4];
-};
-
-struct tpacket_hdr_variant1 {
-       __u32   tp_rxhash;
-       __u32   tp_vlan_tci;
-       __u16   tp_vlan_tpid;
-       __u16   tp_padding;
-};
-
-struct tpacket3_hdr {
-       __u32           tp_next_offset;
-       __u32           tp_sec;
-       __u32           tp_nsec;
-       __u32           tp_snaplen;
-       __u32           tp_len;
-       __u32           tp_status;
-       __u16           tp_mac;
-       __u16           tp_net;
-       /* pkt_hdr variants */
-       union {
-               struct tpacket_hdr_variant1 hv1;
-       };
-       __u8            tp_padding[8];
-};
-
-struct tpacket_bd_ts {
-       unsigned int ts_sec;
-       union {
-               unsigned int ts_usec;
-               unsigned int ts_nsec;
-       };
-};
-
-struct tpacket_hdr_v1 {
-       __u32   block_status;
-       __u32   num_pkts;
-       __u32   offset_to_first_pkt;
-
-       /* Number of valid bytes (including padding)
-        * blk_len <= tp_block_size
-        */
-       __u32   blk_len;
-
-       /*
-        * Quite a few uses of sequence number:
-        * 1. Make sure cache flush etc worked.
-        *    Well, one can argue - why not use the increasing ts below?
-        *    But look at 2. below first.
-        * 2. When you pass around blocks to other user space decoders,
-        *    you can see which blk[s] is[are] outstanding etc.
-        * 3. Validate kernel code.
-        */
-       __aligned_u64   seq_num;
-
-       /*
-        * ts_last_pkt:
-        *
-        * Case 1.      Block has 'N'(N >=1) packets and TMO'd(timed out)
-        *              ts_last_pkt == 'time-stamp of last packet' and NOT the
-        *              time when the timer fired and the block was closed.
-        *              By providing the ts of the last packet we can absolutely
-        *              guarantee that time-stamp wise, the first packet in the
-        *              next block will never precede the last packet of the
-        *              previous block.
-        * Case 2.      Block has zero packets and TMO'd
-        *              ts_last_pkt = time when the timer fired and the block
-        *              was closed.
-        * Case 3.      Block has 'N' packets and NO TMO.
-        *              ts_last_pkt = time-stamp of the last pkt in the block.
-        *
-        * ts_first_pkt:
-        *              Is always the time-stamp when the block was opened.
-        *              Case a) ZERO packets
-        *                      No packets to deal with but atleast you know the
-        *                      time-interval of this block.
-        *              Case b) Non-zero packets
-        *                      Use the ts of the first packet in the block.
-        *
-        */
-       struct tpacket_bd_ts    ts_first_pkt, ts_last_pkt;
-};
-
-union tpacket_bd_header_u {
-       struct tpacket_hdr_v1 bh1;
-};
-
-struct tpacket_block_desc {
-       __u32 version;
-       __u32 offset_to_priv;
-       union tpacket_bd_header_u hdr;
-};
-
-#define TPACKET2_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
-#define TPACKET3_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
-
-enum tpacket_versions {
-       TPACKET_V1,
-       TPACKET_V2,
-       TPACKET_V3
-};
-
-/*
-   Frame structure:
-
-   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
-   - struct tpacket_hdr
-   - pad to TPACKET_ALIGNMENT=16
-   - struct sockaddr_ll
-   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
-   - Start+tp_mac: [ Optional MAC header ]
-   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
-   - Pad to align to TPACKET_ALIGNMENT=16
- */
-
-struct tpacket_req {
-       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
-       unsigned int    tp_block_nr;    /* Number of blocks */
-       unsigned int    tp_frame_size;  /* Size of frame */
-       unsigned int    tp_frame_nr;    /* Total number of frames */
-};
-
-struct tpacket_req3 {
-       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
-       unsigned int    tp_block_nr;    /* Number of blocks */
-       unsigned int    tp_frame_size;  /* Size of frame */
-       unsigned int    tp_frame_nr;    /* Total number of frames */
-       unsigned int    tp_retire_blk_tov; /* timeout in msecs */
-       unsigned int    tp_sizeof_priv; /* offset to private data area */
-       unsigned int    tp_feature_req_word;
-};
-
-union tpacket_req_u {
-       struct tpacket_req      req;
-       struct tpacket_req3     req3;
-};
-
-struct packet_mreq {
-       int             mr_ifindex;
-       unsigned short  mr_type;
-       unsigned short  mr_alen;
-       unsigned char   mr_address[8];
-};
-
-#define PACKET_MR_MULTICAST    0
-#define PACKET_MR_PROMISC      1
-#define PACKET_MR_ALLMULTI     2
-#define PACKET_MR_UNICAST      3
-
-#endif
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
deleted file mode 100644 (file)
index 18a15da..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
-/*
- * VLAN                An implementation of 802.1Q VLAN tagging.
- *
- * Authors:    Ben Greear <greearb@candelatech.com>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- */
-
-#ifndef _LINUX_IF_VLAN_H_
-#define _LINUX_IF_VLAN_H_
-
-
-/* VLAN IOCTLs are found in sockios.h */
-
-/* Passed in vlan_ioctl_args structure to determine behaviour. */
-enum vlan_ioctl_cmds {
-       ADD_VLAN_CMD,
-       DEL_VLAN_CMD,
-       SET_VLAN_INGRESS_PRIORITY_CMD,
-       SET_VLAN_EGRESS_PRIORITY_CMD,
-       GET_VLAN_INGRESS_PRIORITY_CMD,
-       GET_VLAN_EGRESS_PRIORITY_CMD,
-       SET_VLAN_NAME_TYPE_CMD,
-       SET_VLAN_FLAG_CMD,
-       GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
-       GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
-};
-
-enum vlan_flags {
-       VLAN_FLAG_REORDER_HDR   = 0x1,
-       VLAN_FLAG_GVRP          = 0x2,
-       VLAN_FLAG_LOOSE_BINDING = 0x4,
-       VLAN_FLAG_MVRP          = 0x8,
-};
-
-enum vlan_name_types {
-       VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
-       VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
-       VLAN_NAME_TYPE_HIGHEST
-};
-
-struct vlan_ioctl_args {
-       int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
-       char device1[24];
-
-        union {
-               char device2[24];
-               int VID;
-               unsigned int skb_priority;
-               unsigned int name_type;
-               unsigned int bind_type;
-               unsigned int flag; /* Matches vlan_dev_priv flags */
-        } u;
-
-       short vlan_qos;   
-};
-
-#endif /* _LINUX_IF_VLAN_H_ */
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
deleted file mode 100644 (file)
index 048e6b1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
-
-#include <linux/types.h>
-
-/*
- * 'kernel.h' contains some often-used function prototypes etc
- */
-#define __ALIGN_KERNEL(x, a)           __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
-#define __ALIGN_KERNEL_MASK(x, mask)   (((x) + (mask)) & ~(mask))
-
-#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
-
-#endif /* _LINUX_KERNEL_H */
diff --git a/include/linux/libc-compat.h b/include/linux/libc-compat.h
deleted file mode 100644 (file)
index a159991..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * Compatibility interface for userspace libc header coordination:
- *
- * Define compatibility macros that are used to control the inclusion or
- * exclusion of UAPI structures and definitions in coordination with another
- * userspace C library.
- *
- * This header is intended to solve the problem of UAPI definitions that
- * conflict with userspace definitions. If a UAPI header has such conflicting
- * definitions then the solution is as follows:
- *
- * * Synchronize the UAPI header and the libc headers so either one can be
- *   used and such that the ABI is preserved. If this is not possible then
- *   no simple compatibility interface exists (you need to write translating
- *   wrappers and rename things) and you can't use this interface.
- *
- * Then follow this process:
- *
- * (a) Include libc-compat.h in the UAPI header.
- *      e.g. #include <linux/libc-compat.h>
- *     This include must be as early as possible.
- *
- * (b) In libc-compat.h add enough code to detect that the comflicting
- *     userspace libc header has been included first.
- *
- * (c) If the userspace libc header has been included first define a set of
- *     guard macros of the form __UAPI_DEF_FOO and set their values to 1, else
- *     set their values to 0.
- *
- * (d) Back in the UAPI header with the conflicting definitions, guard the
- *     definitions with:
- *     #if __UAPI_DEF_FOO
- *       ...
- *     #endif
- *
- * This fixes the situation where the linux headers are included *after* the
- * libc headers. To fix the problem with the inclusion in the other order the
- * userspace libc headers must be fixed like this:
- *
- * * For all definitions that conflict with kernel definitions wrap those
- *   defines in the following:
- *   #if !__UAPI_DEF_FOO
- *     ...
- *   #endif
- *
- * This prevents the redefinition of a construct already defined by the kernel.
- */
-#ifndef _LIBC_COMPAT_H
-#define _LIBC_COMPAT_H
-
-/* We have included glibc headers... */
-#if defined(__GLIBC__)
-
-/* Coordinate with glibc net/if.h header. */
-#if defined(_NET_IF_H) && defined(__USE_MISC)
-
-/* GLIBC headers included first so don't define anything
- * that would already be defined. */
-
-#define __UAPI_DEF_IF_IFCONF 0
-#define __UAPI_DEF_IF_IFMAP 0
-#define __UAPI_DEF_IF_IFNAMSIZ 0
-#define __UAPI_DEF_IF_IFREQ 0
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-
-#else /* _NET_IF_H */
-
-/* Linux headers included first, and we must define everything
- * we need. The expectation is that glibc will check the
- * __UAPI_DEF_* defines and adjust appropriately. */
-
-#define __UAPI_DEF_IF_IFCONF 1
-#define __UAPI_DEF_IF_IFMAP 1
-#define __UAPI_DEF_IF_IFNAMSIZ 1
-#define __UAPI_DEF_IF_IFREQ 1
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-
-#endif /* _NET_IF_H */
-
-/* Coordinate with glibc netinet/in.h header. */
-#if defined(_NETINET_IN_H)
-
-/* GLIBC headers included first so don't define anything
- * that would already be defined. */
-#define __UAPI_DEF_IN_ADDR             0
-#define __UAPI_DEF_IN_IPPROTO          0
-#define __UAPI_DEF_IN_PKTINFO          0
-#define __UAPI_DEF_IP_MREQ             0
-#define __UAPI_DEF_SOCKADDR_IN         0
-#define __UAPI_DEF_IN_CLASS            0
-
-#define __UAPI_DEF_IN6_ADDR            0
-/* The exception is the in6_addr macros which must be defined
- * if the glibc code didn't define them. This guard matches
- * the guard in glibc/inet/netinet/in.h which defines the
- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
-#if defined(__USE_MISC) || defined (__USE_GNU)
-#define __UAPI_DEF_IN6_ADDR_ALT                0
-#else
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#endif
-#define __UAPI_DEF_SOCKADDR_IN6                0
-#define __UAPI_DEF_IPV6_MREQ           0
-#define __UAPI_DEF_IPPROTO_V6          0
-#define __UAPI_DEF_IPV6_OPTIONS                0
-#define __UAPI_DEF_IN6_PKTINFO         0
-#define __UAPI_DEF_IP6_MTUINFO         0
-
-#else
-
-/* Linux headers included first, and we must define everything
- * we need. The expectation is that glibc will check the
- * __UAPI_DEF_* defines and adjust appropriately. */
-#define __UAPI_DEF_IN_ADDR             1
-#define __UAPI_DEF_IN_IPPROTO          1
-#define __UAPI_DEF_IN_PKTINFO          1
-#define __UAPI_DEF_IP_MREQ             1
-#define __UAPI_DEF_SOCKADDR_IN         1
-#define __UAPI_DEF_IN_CLASS            1
-
-#define __UAPI_DEF_IN6_ADDR            1
-/* We unconditionally define the in6_addr macros and glibc must
- * coordinate. */
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#define __UAPI_DEF_SOCKADDR_IN6                1
-#define __UAPI_DEF_IPV6_MREQ           1
-#define __UAPI_DEF_IPPROTO_V6          1
-#define __UAPI_DEF_IPV6_OPTIONS                1
-#define __UAPI_DEF_IN6_PKTINFO         1
-#define __UAPI_DEF_IP6_MTUINFO         1
-
-#endif /* _NETINET_IN_H */
-
-/* Coordinate with glibc netipx/ipx.h header. */
-#if defined(__NETIPX_IPX_H)
-
-#define __UAPI_DEF_SOCKADDR_IPX                        0
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                0
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    0
-#define __UAPI_DEF_IPX_CONFIG_DATA             0
-#define __UAPI_DEF_IPX_ROUTE_DEF               0
-
-#else /* defined(__NETIPX_IPX_H) */
-
-#define __UAPI_DEF_SOCKADDR_IPX                        1
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
-#define __UAPI_DEF_IPX_CONFIG_DATA             1
-#define __UAPI_DEF_IPX_ROUTE_DEF               1
-
-#endif /* defined(__NETIPX_IPX_H) */
-
-/* Definitions for xattr.h */
-#if defined(_SYS_XATTR_H)
-#define __UAPI_DEF_XATTR               0
-#else
-#define __UAPI_DEF_XATTR               1
-#endif
-
-/* If we did not see any headers from any supported C libraries,
- * or we are being included in the kernel, then define everything
- * that we need. Check for previous __UAPI_* definitions to give
- * unsupported C libraries a way to opt out of any kernel definition. */
-#else /* !defined(__GLIBC__) */
-
-/* Definitions for if.h */
-#ifndef __UAPI_DEF_IF_IFCONF
-#define __UAPI_DEF_IF_IFCONF 1
-#endif
-#ifndef __UAPI_DEF_IF_IFMAP
-#define __UAPI_DEF_IF_IFMAP 1
-#endif
-#ifndef __UAPI_DEF_IF_IFNAMSIZ
-#define __UAPI_DEF_IF_IFNAMSIZ 1
-#endif
-#ifndef __UAPI_DEF_IF_IFREQ
-#define __UAPI_DEF_IF_IFREQ 1
-#endif
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
-#endif
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-#endif
-
-/* Definitions for in.h */
-#ifndef __UAPI_DEF_IN_ADDR
-#define __UAPI_DEF_IN_ADDR             1
-#endif
-#ifndef __UAPI_DEF_IN_IPPROTO
-#define __UAPI_DEF_IN_IPPROTO          1
-#endif
-#ifndef __UAPI_DEF_IN_PKTINFO
-#define __UAPI_DEF_IN_PKTINFO          1
-#endif
-#ifndef __UAPI_DEF_IP_MREQ
-#define __UAPI_DEF_IP_MREQ             1
-#endif
-#ifndef __UAPI_DEF_SOCKADDR_IN
-#define __UAPI_DEF_SOCKADDR_IN         1
-#endif
-#ifndef __UAPI_DEF_IN_CLASS
-#define __UAPI_DEF_IN_CLASS            1
-#endif
-
-/* Definitions for in6.h */
-#ifndef __UAPI_DEF_IN6_ADDR
-#define __UAPI_DEF_IN6_ADDR            1
-#endif
-#ifndef __UAPI_DEF_IN6_ADDR_ALT
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#endif
-#ifndef __UAPI_DEF_SOCKADDR_IN6
-#define __UAPI_DEF_SOCKADDR_IN6                1
-#endif
-#ifndef __UAPI_DEF_IPV6_MREQ
-#define __UAPI_DEF_IPV6_MREQ           1
-#endif
-#ifndef __UAPI_DEF_IPPROTO_V6
-#define __UAPI_DEF_IPPROTO_V6          1
-#endif
-#ifndef __UAPI_DEF_IPV6_OPTIONS
-#define __UAPI_DEF_IPV6_OPTIONS                1
-#endif
-#ifndef __UAPI_DEF_IN6_PKTINFO
-#define __UAPI_DEF_IN6_PKTINFO         1
-#endif
-#ifndef __UAPI_DEF_IP6_MTUINFO
-#define __UAPI_DEF_IP6_MTUINFO         1
-#endif
-
-/* Definitions for ipx.h */
-#ifndef __UAPI_DEF_SOCKADDR_IPX
-#define __UAPI_DEF_SOCKADDR_IPX                        1
-#endif
-#ifndef __UAPI_DEF_IPX_ROUTE_DEFINITION
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
-#endif
-#ifndef __UAPI_DEF_IPX_INTERFACE_DEFINITION
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
-#endif
-#ifndef __UAPI_DEF_IPX_CONFIG_DATA
-#define __UAPI_DEF_IPX_CONFIG_DATA             1
-#endif
-#ifndef __UAPI_DEF_IPX_ROUTE_DEF
-#define __UAPI_DEF_IPX_ROUTE_DEF               1
-#endif
-
-/* Definitions for xattr.h */
-#ifndef __UAPI_DEF_XATTR
-#define __UAPI_DEF_XATTR               1
-#endif
-
-#endif /* __GLIBC__ */
-
-#endif /* _LIBC_COMPAT_H */
diff --git a/include/linux/neighbour.h b/include/linux/neighbour.h
deleted file mode 100644 (file)
index 904db61..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_NEIGHBOUR_H
-#define __LINUX_NEIGHBOUR_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-struct ndmsg {
-       __u8            ndm_family;
-       __u8            ndm_pad1;
-       __u16           ndm_pad2;
-       __s32           ndm_ifindex;
-       __u16           ndm_state;
-       __u8            ndm_flags;
-       __u8            ndm_type;
-};
-
-enum {
-       NDA_UNSPEC,
-       NDA_DST,
-       NDA_LLADDR,
-       NDA_CACHEINFO,
-       NDA_PROBES,
-       NDA_VLAN,
-       NDA_PORT,
-       NDA_VNI,
-       NDA_IFINDEX,
-       NDA_MASTER,
-       NDA_LINK_NETNSID,
-       NDA_SRC_VNI,
-       __NDA_MAX
-};
-
-#define NDA_MAX (__NDA_MAX - 1)
-
-/*
- *     Neighbor Cache Entry Flags
- */
-
-#define NTF_USE                0x01
-#define NTF_SELF       0x02
-#define NTF_MASTER     0x04
-#define NTF_PROXY      0x08    /* == ATF_PUBL */
-#define NTF_EXT_LEARNED        0x10
-#define NTF_OFFLOADED   0x20
-#define NTF_ROUTER     0x80
-
-/*
- *     Neighbor Cache Entry States.
- */
-
-#define NUD_INCOMPLETE 0x01
-#define NUD_REACHABLE  0x02
-#define NUD_STALE      0x04
-#define NUD_DELAY      0x08
-#define NUD_PROBE      0x10
-#define NUD_FAILED     0x20
-
-/* Dummy states */
-#define NUD_NOARP      0x40
-#define NUD_PERMANENT  0x80
-#define NUD_NONE       0x00
-
-/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
-   and make no address resolution or NUD.
-   NUD_PERMANENT also cannot be deleted by garbage collectors.
- */
-
-struct nda_cacheinfo {
-       __u32           ndm_confirmed;
-       __u32           ndm_used;
-       __u32           ndm_updated;
-       __u32           ndm_refcnt;
-};
-
-/*****************************************************************
- *             Neighbour tables specific messages.
- *
- * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
- * NLM_F_DUMP flag set. Every neighbour table configuration is
- * spread over multiple messages to avoid running into message
- * size limits on systems with many interfaces. The first message
- * in the sequence transports all not device specific data such as
- * statistics, configuration, and the default parameter set.
- * This message is followed by 0..n messages carrying device
- * specific parameter sets.
- * Although the ordering should be sufficient, NDTA_NAME can be
- * used to identify sequences. The initial message can be identified
- * by checking for NDTA_CONFIG. The device specific messages do
- * not contain this TLV but have NDTPA_IFINDEX set to the
- * corresponding interface index.
- *
- * To change neighbour table attributes, send RTM_SETNEIGHTBL
- * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
- * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
- * otherwise. Device specific parameter sets can be changed by
- * setting NDTPA_IFINDEX to the interface index of the corresponding
- * device.
- ****/
-
-struct ndt_stats {
-       __u64           ndts_allocs;
-       __u64           ndts_destroys;
-       __u64           ndts_hash_grows;
-       __u64           ndts_res_failed;
-       __u64           ndts_lookups;
-       __u64           ndts_hits;
-       __u64           ndts_rcv_probes_mcast;
-       __u64           ndts_rcv_probes_ucast;
-       __u64           ndts_periodic_gc_runs;
-       __u64           ndts_forced_gc_runs;
-       __u64           ndts_table_fulls;
-};
-
-enum {
-       NDTPA_UNSPEC,
-       NDTPA_IFINDEX,                  /* u32, unchangeable */
-       NDTPA_REFCNT,                   /* u32, read-only */
-       NDTPA_REACHABLE_TIME,           /* u64, read-only, msecs */
-       NDTPA_BASE_REACHABLE_TIME,      /* u64, msecs */
-       NDTPA_RETRANS_TIME,             /* u64, msecs */
-       NDTPA_GC_STALETIME,             /* u64, msecs */
-       NDTPA_DELAY_PROBE_TIME,         /* u64, msecs */
-       NDTPA_QUEUE_LEN,                /* u32 */
-       NDTPA_APP_PROBES,               /* u32 */
-       NDTPA_UCAST_PROBES,             /* u32 */
-       NDTPA_MCAST_PROBES,             /* u32 */
-       NDTPA_ANYCAST_DELAY,            /* u64, msecs */
-       NDTPA_PROXY_DELAY,              /* u64, msecs */
-       NDTPA_PROXY_QLEN,               /* u32 */
-       NDTPA_LOCKTIME,                 /* u64, msecs */
-       NDTPA_QUEUE_LENBYTES,           /* u32 */
-       NDTPA_MCAST_REPROBES,           /* u32 */
-       NDTPA_PAD,
-       __NDTPA_MAX
-};
-#define NDTPA_MAX (__NDTPA_MAX - 1)
-
-struct ndtmsg {
-       __u8            ndtm_family;
-       __u8            ndtm_pad1;
-       __u16           ndtm_pad2;
-};
-
-struct ndt_config {
-       __u16           ndtc_key_len;
-       __u16           ndtc_entry_size;
-       __u32           ndtc_entries;
-       __u32           ndtc_last_flush;        /* delta to now in msecs */
-       __u32           ndtc_last_rand;         /* delta to now in msecs */
-       __u32           ndtc_hash_rnd;
-       __u32           ndtc_hash_mask;
-       __u32           ndtc_hash_chain_gc;
-       __u32           ndtc_proxy_qlen;
-};
-
-enum {
-       NDTA_UNSPEC,
-       NDTA_NAME,                      /* char *, unchangeable */
-       NDTA_THRESH1,                   /* u32 */
-       NDTA_THRESH2,                   /* u32 */
-       NDTA_THRESH3,                   /* u32 */
-       NDTA_CONFIG,                    /* struct ndt_config, read-only */
-       NDTA_PARMS,                     /* nested TLV NDTPA_* */
-       NDTA_STATS,                     /* struct ndt_stats, read-only */
-       NDTA_GC_INTERVAL,               /* u64, msecs */
-       NDTA_PAD,
-       __NDTA_MAX
-};
-#define NDTA_MAX (__NDTA_MAX - 1)
-
-#endif
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
deleted file mode 100644 (file)
index 8209dbe..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_NETLINK_H
-#define __LINUX_NETLINK_H
-
-#include <linux/kernel.h>
-#include <linux/socket.h> /* for __kernel_sa_family_t */
-#include <linux/types.h>
-
-#define NETLINK_ROUTE          0       /* Routing/device hook                          */
-#define NETLINK_UNUSED         1       /* Unused number                                */
-#define NETLINK_USERSOCK       2       /* Reserved for user mode socket protocols      */
-#define NETLINK_FIREWALL       3       /* Unused number, formerly ip_queue             */
-#define NETLINK_SOCK_DIAG      4       /* socket monitoring                            */
-#define NETLINK_NFLOG          5       /* netfilter/iptables ULOG */
-#define NETLINK_XFRM           6       /* ipsec */
-#define NETLINK_SELINUX                7       /* SELinux event notifications */
-#define NETLINK_ISCSI          8       /* Open-iSCSI */
-#define NETLINK_AUDIT          9       /* auditing */
-#define NETLINK_FIB_LOOKUP     10      
-#define NETLINK_CONNECTOR      11
-#define NETLINK_NETFILTER      12      /* netfilter subsystem */
-#define NETLINK_IP6_FW         13
-#define NETLINK_DNRTMSG                14      /* DECnet routing messages */
-#define NETLINK_KOBJECT_UEVENT 15      /* Kernel messages to userspace */
-#define NETLINK_GENERIC                16
-/* leave room for NETLINK_DM (DM Events) */
-#define NETLINK_SCSITRANSPORT  18      /* SCSI Transports */
-#define NETLINK_ECRYPTFS       19
-#define NETLINK_RDMA           20
-#define NETLINK_CRYPTO         21      /* Crypto layer */
-#define NETLINK_SMC            22      /* SMC monitoring */
-
-#define NETLINK_INET_DIAG      NETLINK_SOCK_DIAG
-
-#define MAX_LINKS 32           
-
-struct sockaddr_nl {
-       unsigned short  nl_family;      /* AF_NETLINK   */
-       unsigned short  nl_pad;         /* zero         */
-       __u32           nl_pid;         /* port ID      */
-               __u32           nl_groups;      /* multicast groups mask */
-};
-
-struct nlmsghdr {
-       __u32           nlmsg_len;      /* Length of message including header */
-       __u16           nlmsg_type;     /* Message content */
-       __u16           nlmsg_flags;    /* Additional flags */
-       __u32           nlmsg_seq;      /* Sequence number */
-       __u32           nlmsg_pid;      /* Sending process port ID */
-};
-
-/* Flags values */
-
-#define NLM_F_REQUEST          0x01    /* It is request message.       */
-#define NLM_F_MULTI            0x02    /* Multipart message, terminated by NLMSG_DONE */
-#define NLM_F_ACK              0x04    /* Reply with ack, with zero or error code */
-#define NLM_F_ECHO             0x08    /* Echo this request            */
-#define NLM_F_DUMP_INTR                0x10    /* Dump was inconsistent due to sequence change */
-#define NLM_F_DUMP_FILTERED    0x20    /* Dump was filtered as requested */
-
-/* Modifiers to GET request */
-#define NLM_F_ROOT     0x100   /* specify tree root    */
-#define NLM_F_MATCH    0x200   /* return all matching  */
-#define NLM_F_ATOMIC   0x400   /* atomic GET           */
-#define NLM_F_DUMP     (NLM_F_ROOT|NLM_F_MATCH)
-
-/* Modifiers to NEW request */
-#define NLM_F_REPLACE  0x100   /* Override existing            */
-#define NLM_F_EXCL     0x200   /* Do not touch, if it exists   */
-#define NLM_F_CREATE   0x400   /* Create, if it does not exist */
-#define NLM_F_APPEND   0x800   /* Add to end of list           */
-
-/* Modifiers to DELETE request */
-#define NLM_F_NONREC   0x100   /* Do not delete recursively    */
-
-/* Flags for ACK message */
-#define NLM_F_CAPPED   0x100   /* request was capped */
-#define NLM_F_ACK_TLVS 0x200   /* extended ACK TVLs were included */
-
-/*
-   4.4BSD ADD          NLM_F_CREATE|NLM_F_EXCL
-   4.4BSD CHANGE       NLM_F_REPLACE
-
-   True CHANGE         NLM_F_CREATE|NLM_F_REPLACE
-   Append              NLM_F_CREATE
-   Check               NLM_F_EXCL
- */
-
-#define NLMSG_ALIGNTO  4U
-#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
-#define NLMSG_HDRLEN    ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
-#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
-#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
-#define NLMSG_DATA(nlh)  ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
-#define NLMSG_NEXT(nlh,len)     ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
-                                 (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
-#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \
-                          (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
-                          (nlh)->nlmsg_len <= (len))
-#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
-
-#define NLMSG_NOOP             0x1     /* Nothing.             */
-#define NLMSG_ERROR            0x2     /* Error                */
-#define NLMSG_DONE             0x3     /* End of a dump        */
-#define NLMSG_OVERRUN          0x4     /* Data lost            */
-
-#define NLMSG_MIN_TYPE         0x10    /* < 0x10: reserved control messages */
-
-struct nlmsgerr {
-       int             error;
-       struct nlmsghdr msg;
-       /*
-        * followed by the message contents unless NETLINK_CAP_ACK was set
-        * or the ACK indicates success (error == 0)
-        * message length is aligned with NLMSG_ALIGN()
-        */
-       /*
-        * followed by TLVs defined in enum nlmsgerr_attrs
-        * if NETLINK_EXT_ACK was set
-        */
-};
-
-/**
- * enum nlmsgerr_attrs - nlmsgerr attributes
- * @NLMSGERR_ATTR_UNUSED: unused
- * @NLMSGERR_ATTR_MSG: error message string (string)
- * @NLMSGERR_ATTR_OFFS: offset of the invalid attribute in the original
- *      message, counting from the beginning of the header (u32)
- * @NLMSGERR_ATTR_COOKIE: arbitrary subsystem specific cookie to
- *     be used - in the success case - to identify a created
- *     object or operation or similar (binary)
- * @__NLMSGERR_ATTR_MAX: number of attributes
- * @NLMSGERR_ATTR_MAX: highest attribute number
- */
-enum nlmsgerr_attrs {
-       NLMSGERR_ATTR_UNUSED,
-       NLMSGERR_ATTR_MSG,
-       NLMSGERR_ATTR_OFFS,
-       NLMSGERR_ATTR_COOKIE,
-
-       __NLMSGERR_ATTR_MAX,
-       NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
-};
-
-#define NETLINK_ADD_MEMBERSHIP         1
-#define NETLINK_DROP_MEMBERSHIP                2
-#define NETLINK_PKTINFO                        3
-#define NETLINK_BROADCAST_ERROR                4
-#define NETLINK_NO_ENOBUFS             5
-#define NETLINK_RX_RING                        6
-#define NETLINK_TX_RING                        7
-#define NETLINK_LISTEN_ALL_NSID                8
-#define NETLINK_LIST_MEMBERSHIPS       9
-#define NETLINK_CAP_ACK                        10
-#define NETLINK_EXT_ACK                        11
-
-struct nl_pktinfo {
-       __u32   group;
-};
-
-struct nl_mmap_req {
-       unsigned int    nm_block_size;
-       unsigned int    nm_block_nr;
-       unsigned int    nm_frame_size;
-       unsigned int    nm_frame_nr;
-};
-
-struct nl_mmap_hdr {
-       unsigned int    nm_status;
-       unsigned int    nm_len;
-       __u32           nm_group;
-       /* credentials */
-       __u32           nm_pid;
-       __u32           nm_uid;
-       __u32           nm_gid;
-};
-
-enum nl_mmap_status {
-       NL_MMAP_STATUS_UNUSED,
-       NL_MMAP_STATUS_RESERVED,
-       NL_MMAP_STATUS_VALID,
-       NL_MMAP_STATUS_COPY,
-       NL_MMAP_STATUS_SKIP,
-};
-
-#define NL_MMAP_MSG_ALIGNMENT          NLMSG_ALIGNTO
-#define NL_MMAP_MSG_ALIGN(sz)          __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
-#define NL_MMAP_HDRLEN                 NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
-
-#define NET_MAJOR 36           /* Major 36 is reserved for networking                                          */
-
-enum {
-       NETLINK_UNCONNECTED = 0,
-       NETLINK_CONNECTED,
-};
-
-/*
- *  <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- * |        Header       | Pad |     Payload       | Pad |
- * |   (struct nlattr)   | ing |                   | ing |
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- *  <-------------- nlattr->nla_len -------------->
- */
-
-struct nlattr {
-       __u16           nla_len;
-       __u16           nla_type;
-};
-
-/*
- * nla_type (16 bits)
- * +---+---+-------------------------------+
- * | N | O | Attribute Type                |
- * +---+---+-------------------------------+
- * N := Carries nested attributes
- * O := Payload stored in network byte order
- *
- * Note: The N and O flag are mutually exclusive.
- */
-#define NLA_F_NESTED           (1 << 15)
-#define NLA_F_NET_BYTEORDER    (1 << 14)
-#define NLA_TYPE_MASK          ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
-
-#define NLA_ALIGNTO            4
-#define NLA_ALIGN(len)         (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
-#define NLA_HDRLEN             ((int) NLA_ALIGN(sizeof(struct nlattr)))
-
-/* Generic 32 bitflags attribute content sent to the kernel.
- *
- * The value is a bitmap that defines the values being set
- * The selector is a bitmask that defines which value is legit
- *
- * Examples:
- *  value = 0x0, and selector = 0x1
- *  implies we are selecting bit 1 and we want to set its value to 0.
- *
- *  value = 0x2, and selector = 0x2
- *  implies we are selecting bit 2 and we want to set its value to 1.
- *
- */
-struct nla_bitfield32 {
-       __u32 value;
-       __u32 selector;
-};
-
-#endif /* __LINUX_NETLINK_H */
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
deleted file mode 100644 (file)
index 643e475..0000000
+++ /dev/null
@@ -1,743 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef __LINUX_RTNETLINK_H
-#define __LINUX_RTNETLINK_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-#include <linux/if_link.h>
-#include <linux/if_addr.h>
-#include <linux/neighbour.h>
-
-/* rtnetlink families. Values up to 127 are reserved for real address
- * families, values above 128 may be used arbitrarily.
- */
-#define RTNL_FAMILY_IPMR               128
-#define RTNL_FAMILY_IP6MR              129
-#define RTNL_FAMILY_MAX                        129
-
-/****
- *             Routing/neighbour discovery messages.
- ****/
-
-/* Types of messages */
-
-enum {
-       RTM_BASE        = 16,
-#define RTM_BASE       RTM_BASE
-
-       RTM_NEWLINK     = 16,
-#define RTM_NEWLINK    RTM_NEWLINK
-       RTM_DELLINK,
-#define RTM_DELLINK    RTM_DELLINK
-       RTM_GETLINK,
-#define RTM_GETLINK    RTM_GETLINK
-       RTM_SETLINK,
-#define RTM_SETLINK    RTM_SETLINK
-
-       RTM_NEWADDR     = 20,
-#define RTM_NEWADDR    RTM_NEWADDR
-       RTM_DELADDR,
-#define RTM_DELADDR    RTM_DELADDR
-       RTM_GETADDR,
-#define RTM_GETADDR    RTM_GETADDR
-
-       RTM_NEWROUTE    = 24,
-#define RTM_NEWROUTE   RTM_NEWROUTE
-       RTM_DELROUTE,
-#define RTM_DELROUTE   RTM_DELROUTE
-       RTM_GETROUTE,
-#define RTM_GETROUTE   RTM_GETROUTE
-
-       RTM_NEWNEIGH    = 28,
-#define RTM_NEWNEIGH   RTM_NEWNEIGH
-       RTM_DELNEIGH,
-#define RTM_DELNEIGH   RTM_DELNEIGH
-       RTM_GETNEIGH,
-#define RTM_GETNEIGH   RTM_GETNEIGH
-
-       RTM_NEWRULE     = 32,
-#define RTM_NEWRULE    RTM_NEWRULE
-       RTM_DELRULE,
-#define RTM_DELRULE    RTM_DELRULE
-       RTM_GETRULE,
-#define RTM_GETRULE    RTM_GETRULE
-
-       RTM_NEWQDISC    = 36,
-#define RTM_NEWQDISC   RTM_NEWQDISC
-       RTM_DELQDISC,
-#define RTM_DELQDISC   RTM_DELQDISC
-       RTM_GETQDISC,
-#define RTM_GETQDISC   RTM_GETQDISC
-
-       RTM_NEWTCLASS   = 40,
-#define RTM_NEWTCLASS  RTM_NEWTCLASS
-       RTM_DELTCLASS,
-#define RTM_DELTCLASS  RTM_DELTCLASS
-       RTM_GETTCLASS,
-#define RTM_GETTCLASS  RTM_GETTCLASS
-
-       RTM_NEWTFILTER  = 44,
-#define RTM_NEWTFILTER RTM_NEWTFILTER
-       RTM_DELTFILTER,
-#define RTM_DELTFILTER RTM_DELTFILTER
-       RTM_GETTFILTER,
-#define RTM_GETTFILTER RTM_GETTFILTER
-
-       RTM_NEWACTION   = 48,
-#define RTM_NEWACTION   RTM_NEWACTION
-       RTM_DELACTION,
-#define RTM_DELACTION   RTM_DELACTION
-       RTM_GETACTION,
-#define RTM_GETACTION   RTM_GETACTION
-
-       RTM_NEWPREFIX   = 52,
-#define RTM_NEWPREFIX  RTM_NEWPREFIX
-
-       RTM_GETMULTICAST = 58,
-#define RTM_GETMULTICAST RTM_GETMULTICAST
-
-       RTM_GETANYCAST  = 62,
-#define RTM_GETANYCAST RTM_GETANYCAST
-
-       RTM_NEWNEIGHTBL = 64,
-#define RTM_NEWNEIGHTBL        RTM_NEWNEIGHTBL
-       RTM_GETNEIGHTBL = 66,
-#define RTM_GETNEIGHTBL        RTM_GETNEIGHTBL
-       RTM_SETNEIGHTBL,
-#define RTM_SETNEIGHTBL        RTM_SETNEIGHTBL
-
-       RTM_NEWNDUSEROPT = 68,
-#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
-
-       RTM_NEWADDRLABEL = 72,
-#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
-       RTM_DELADDRLABEL,
-#define RTM_DELADDRLABEL RTM_DELADDRLABEL
-       RTM_GETADDRLABEL,
-#define RTM_GETADDRLABEL RTM_GETADDRLABEL
-
-       RTM_GETDCB = 78,
-#define RTM_GETDCB RTM_GETDCB
-       RTM_SETDCB,
-#define RTM_SETDCB RTM_SETDCB
-
-       RTM_NEWNETCONF = 80,
-#define RTM_NEWNETCONF RTM_NEWNETCONF
-       RTM_DELNETCONF,
-#define RTM_DELNETCONF RTM_DELNETCONF
-       RTM_GETNETCONF = 82,
-#define RTM_GETNETCONF RTM_GETNETCONF
-
-       RTM_NEWMDB = 84,
-#define RTM_NEWMDB RTM_NEWMDB
-       RTM_DELMDB = 85,
-#define RTM_DELMDB RTM_DELMDB
-       RTM_GETMDB = 86,
-#define RTM_GETMDB RTM_GETMDB
-
-       RTM_NEWNSID = 88,
-#define RTM_NEWNSID RTM_NEWNSID
-       RTM_DELNSID = 89,
-#define RTM_DELNSID RTM_DELNSID
-       RTM_GETNSID = 90,
-#define RTM_GETNSID RTM_GETNSID
-
-       RTM_NEWSTATS = 92,
-#define RTM_NEWSTATS RTM_NEWSTATS
-       RTM_GETSTATS = 94,
-#define RTM_GETSTATS RTM_GETSTATS
-
-       RTM_NEWCACHEREPORT = 96,
-#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
-
-       RTM_NEWCHAIN = 100,
-#define RTM_NEWCHAIN RTM_NEWCHAIN
-       RTM_DELCHAIN,
-#define RTM_DELCHAIN RTM_DELCHAIN
-       RTM_GETCHAIN,
-#define RTM_GETCHAIN RTM_GETCHAIN
-
-       __RTM_MAX,
-#define RTM_MAX                (((__RTM_MAX + 3) & ~3) - 1)
-};
-
-#define RTM_NR_MSGTYPES        (RTM_MAX + 1 - RTM_BASE)
-#define RTM_NR_FAMILIES        (RTM_NR_MSGTYPES >> 2)
-#define RTM_FAM(cmd)   (((cmd) - RTM_BASE) >> 2)
-
-/* 
-   Generic structure for encapsulation of optional route information.
-   It is reminiscent of sockaddr, but with sa_family replaced
-   with attribute type.
- */
-
-struct rtattr {
-       unsigned short  rta_len;
-       unsigned short  rta_type;
-};
-
-/* Macros to handle rtattributes */
-
-#define RTA_ALIGNTO    4U
-#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
-#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
-                        (rta)->rta_len >= sizeof(struct rtattr) && \
-                        (rta)->rta_len <= (len))
-#define RTA_NEXT(rta,attrlen)  ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
-                                (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
-#define RTA_LENGTH(len)        (RTA_ALIGN(sizeof(struct rtattr)) + (len))
-#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
-#define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
-#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
-
-
-
-
-/******************************************************************************
- *             Definitions used in routing table administration.
- ****/
-
-struct rtmsg {
-       unsigned char           rtm_family;
-       unsigned char           rtm_dst_len;
-       unsigned char           rtm_src_len;
-       unsigned char           rtm_tos;
-
-       unsigned char           rtm_table;      /* Routing table id */
-       unsigned char           rtm_protocol;   /* Routing protocol; see below  */
-       unsigned char           rtm_scope;      /* See below */ 
-       unsigned char           rtm_type;       /* See below    */
-
-       unsigned                rtm_flags;
-};
-
-/* rtm_type */
-
-enum {
-       RTN_UNSPEC,
-       RTN_UNICAST,            /* Gateway or direct route      */
-       RTN_LOCAL,              /* Accept locally               */
-       RTN_BROADCAST,          /* Accept locally as broadcast,
-                                  send as broadcast */
-       RTN_ANYCAST,            /* Accept locally as broadcast,
-                                  but send as unicast */
-       RTN_MULTICAST,          /* Multicast route              */
-       RTN_BLACKHOLE,          /* Drop                         */
-       RTN_UNREACHABLE,        /* Destination is unreachable   */
-       RTN_PROHIBIT,           /* Administratively prohibited  */
-       RTN_THROW,              /* Not in this table            */
-       RTN_NAT,                /* Translate this address       */
-       RTN_XRESOLVE,           /* Use external resolver        */
-       __RTN_MAX
-};
-
-#define RTN_MAX (__RTN_MAX - 1)
-
-
-/* rtm_protocol */
-
-#define RTPROT_UNSPEC  0
-#define RTPROT_REDIRECT        1       /* Route installed by ICMP redirects;
-                                  not used by current IPv4 */
-#define RTPROT_KERNEL  2       /* Route installed by kernel            */
-#define RTPROT_BOOT    3       /* Route installed during boot          */
-#define RTPROT_STATIC  4       /* Route installed by administrator     */
-
-/* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
-   they are just passed from user and back as is.
-   It will be used by hypothetical multiple routing daemons.
-   Note that protocol values should be standardized in order to
-   avoid conflicts.
- */
-
-#define RTPROT_GATED   8       /* Apparently, GateD */
-#define RTPROT_RA      9       /* RDISC/ND router advertisements */
-#define RTPROT_MRT     10      /* Merit MRT */
-#define RTPROT_ZEBRA   11      /* Zebra */
-#define RTPROT_BIRD    12      /* BIRD */
-#define RTPROT_DNROUTED        13      /* DECnet routing daemon */
-#define RTPROT_XORP    14      /* XORP */
-#define RTPROT_NTK     15      /* Netsukuku */
-#define RTPROT_DHCP    16      /* DHCP client */
-#define RTPROT_MROUTED 17      /* Multicast daemon */
-#define RTPROT_BABEL   42      /* Babel daemon */
-#define RTPROT_BGP     186     /* BGP Routes */
-#define RTPROT_ISIS    187     /* ISIS Routes */
-#define RTPROT_OSPF    188     /* OSPF Routes */
-#define RTPROT_RIP     189     /* RIP Routes */
-#define RTPROT_EIGRP   192     /* EIGRP Routes */
-
-/* rtm_scope
-
-   Really it is not scope, but sort of distance to the destination.
-   NOWHERE are reserved for not existing destinations, HOST is our
-   local addresses, LINK are destinations, located on directly attached
-   link and UNIVERSE is everywhere in the Universe.
-
-   Intermediate values are also possible f.e. interior routes
-   could be assigned a value between UNIVERSE and LINK.
-*/
-
-enum rt_scope_t {
-       RT_SCOPE_UNIVERSE=0,
-/* User defined values  */
-       RT_SCOPE_SITE=200,
-       RT_SCOPE_LINK=253,
-       RT_SCOPE_HOST=254,
-       RT_SCOPE_NOWHERE=255
-};
-
-/* rtm_flags */
-
-#define RTM_F_NOTIFY           0x100   /* Notify user of route change  */
-#define RTM_F_CLONED           0x200   /* This route is cloned         */
-#define RTM_F_EQUALIZE         0x400   /* Multipath equalizer: NI      */
-#define RTM_F_PREFIX           0x800   /* Prefix addresses             */
-#define RTM_F_LOOKUP_TABLE     0x1000  /* set rtm_table to FIB lookup result */
-#define RTM_F_FIB_MATCH                0x2000  /* return full fib lookup match */
-
-/* Reserved table identifiers */
-
-enum rt_class_t {
-       RT_TABLE_UNSPEC=0,
-/* User defined values */
-       RT_TABLE_COMPAT=252,
-       RT_TABLE_DEFAULT=253,
-       RT_TABLE_MAIN=254,
-       RT_TABLE_LOCAL=255,
-       RT_TABLE_MAX=0xFFFFFFFF
-};
-
-
-/* Routing message attributes */
-
-enum rtattr_type_t {
-       RTA_UNSPEC,
-       RTA_DST,
-       RTA_SRC,
-       RTA_IIF,
-       RTA_OIF,
-       RTA_GATEWAY,
-       RTA_PRIORITY,
-       RTA_PREFSRC,
-       RTA_METRICS,
-       RTA_MULTIPATH,
-       RTA_PROTOINFO, /* no longer used */
-       RTA_FLOW,
-       RTA_CACHEINFO,
-       RTA_SESSION, /* no longer used */
-       RTA_MP_ALGO, /* no longer used */
-       RTA_TABLE,
-       RTA_MARK,
-       RTA_MFC_STATS,
-       RTA_VIA,
-       RTA_NEWDST,
-       RTA_PREF,
-       RTA_ENCAP_TYPE,
-       RTA_ENCAP,
-       RTA_EXPIRES,
-       RTA_PAD,
-       RTA_UID,
-       RTA_TTL_PROPAGATE,
-       RTA_IP_PROTO,
-       RTA_SPORT,
-       RTA_DPORT,
-       __RTA_MAX
-};
-
-#define RTA_MAX (__RTA_MAX - 1)
-
-#define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
-#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
-
-/* RTM_MULTIPATH --- array of struct rtnexthop.
- *
- * "struct rtnexthop" describes all necessary nexthop information,
- * i.e. parameters of path to a destination via this nexthop.
- *
- * At the moment it is impossible to set different prefsrc, mtu, window
- * and rtt for different paths from multipath.
- */
-
-struct rtnexthop {
-       unsigned short          rtnh_len;
-       unsigned char           rtnh_flags;
-       unsigned char           rtnh_hops;
-       int                     rtnh_ifindex;
-};
-
-/* rtnh_flags */
-
-#define RTNH_F_DEAD            1       /* Nexthop is dead (used by multipath)  */
-#define RTNH_F_PERVASIVE       2       /* Do recursive gateway lookup  */
-#define RTNH_F_ONLINK          4       /* Gateway is forced on link    */
-#define RTNH_F_OFFLOAD         8       /* offloaded route */
-#define RTNH_F_LINKDOWN                16      /* carrier-down on nexthop */
-#define RTNH_F_UNRESOLVED      32      /* The entry is unresolved (ipmr) */
-
-#define RTNH_COMPARE_MASK      (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
-
-/* Macros to handle hexthops */
-
-#define RTNH_ALIGNTO   4
-#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
-#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
-                          ((int)(rtnh)->rtnh_len) <= (len))
-#define RTNH_NEXT(rtnh)        ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
-#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
-#define RTNH_SPACE(len)        RTNH_ALIGN(RTNH_LENGTH(len))
-#define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
-
-/* RTM_CACHEINFO */
-
-struct rta_cacheinfo {
-       __u32   rta_clntref;
-       __u32   rta_lastuse;
-       __s32   rta_expires;
-       __u32   rta_error;
-       __u32   rta_used;
-
-#define RTNETLINK_HAVE_PEERINFO 1
-       __u32   rta_id;
-       __u32   rta_ts;
-       __u32   rta_tsage;
-};
-
-/* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
-
-enum {
-       RTAX_UNSPEC,
-#define RTAX_UNSPEC RTAX_UNSPEC
-       RTAX_LOCK,
-#define RTAX_LOCK RTAX_LOCK
-       RTAX_MTU,
-#define RTAX_MTU RTAX_MTU
-       RTAX_WINDOW,
-#define RTAX_WINDOW RTAX_WINDOW
-       RTAX_RTT,
-#define RTAX_RTT RTAX_RTT
-       RTAX_RTTVAR,
-#define RTAX_RTTVAR RTAX_RTTVAR
-       RTAX_SSTHRESH,
-#define RTAX_SSTHRESH RTAX_SSTHRESH
-       RTAX_CWND,
-#define RTAX_CWND RTAX_CWND
-       RTAX_ADVMSS,
-#define RTAX_ADVMSS RTAX_ADVMSS
-       RTAX_REORDERING,
-#define RTAX_REORDERING RTAX_REORDERING
-       RTAX_HOPLIMIT,
-#define RTAX_HOPLIMIT RTAX_HOPLIMIT
-       RTAX_INITCWND,
-#define RTAX_INITCWND RTAX_INITCWND
-       RTAX_FEATURES,
-#define RTAX_FEATURES RTAX_FEATURES
-       RTAX_RTO_MIN,
-#define RTAX_RTO_MIN RTAX_RTO_MIN
-       RTAX_INITRWND,
-#define RTAX_INITRWND RTAX_INITRWND
-       RTAX_QUICKACK,
-#define RTAX_QUICKACK RTAX_QUICKACK
-       RTAX_CC_ALGO,
-#define RTAX_CC_ALGO RTAX_CC_ALGO
-       RTAX_FASTOPEN_NO_COOKIE,
-#define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
-       __RTAX_MAX
-};
-
-#define RTAX_MAX (__RTAX_MAX - 1)
-
-#define RTAX_FEATURE_ECN       (1 << 0)
-#define RTAX_FEATURE_SACK      (1 << 1)
-#define RTAX_FEATURE_TIMESTAMP (1 << 2)
-#define RTAX_FEATURE_ALLFRAG   (1 << 3)
-
-#define RTAX_FEATURE_MASK      (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
-                                RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
-
-struct rta_session {
-       __u8    proto;
-       __u8    pad1;
-       __u16   pad2;
-
-       union {
-               struct {
-                       __u16   sport;
-                       __u16   dport;
-               } ports;
-
-               struct {
-                       __u8    type;
-                       __u8    code;
-                       __u16   ident;
-               } icmpt;
-
-               __u32           spi;
-       } u;
-};
-
-struct rta_mfc_stats {
-       __u64   mfcs_packets;
-       __u64   mfcs_bytes;
-       __u64   mfcs_wrong_if;
-};
-
-/****
- *             General form of address family dependent message.
- ****/
-
-struct rtgenmsg {
-       unsigned char           rtgen_family;
-};
-
-/*****************************************************************
- *             Link layer specific messages.
- ****/
-
-/* struct ifinfomsg
- * passes link level specific information, not dependent
- * on network protocol.
- */
-
-struct ifinfomsg {
-       unsigned char   ifi_family;
-       unsigned char   __ifi_pad;
-       unsigned short  ifi_type;               /* ARPHRD_* */
-       int             ifi_index;              /* Link index   */
-       unsigned        ifi_flags;              /* IFF_* flags  */
-       unsigned        ifi_change;             /* IFF_* change mask */
-};
-
-/********************************************************************
- *             prefix information 
- ****/
-
-struct prefixmsg {
-       unsigned char   prefix_family;
-       unsigned char   prefix_pad1;
-       unsigned short  prefix_pad2;
-       int             prefix_ifindex;
-       unsigned char   prefix_type;
-       unsigned char   prefix_len;
-       unsigned char   prefix_flags;
-       unsigned char   prefix_pad3;
-};
-
-enum 
-{
-       PREFIX_UNSPEC,
-       PREFIX_ADDRESS,
-       PREFIX_CACHEINFO,
-       __PREFIX_MAX
-};
-
-#define PREFIX_MAX     (__PREFIX_MAX - 1)
-
-struct prefix_cacheinfo {
-       __u32   preferred_time;
-       __u32   valid_time;
-};
-
-
-/*****************************************************************
- *             Traffic control messages.
- ****/
-
-struct tcmsg {
-       unsigned char   tcm_family;
-       unsigned char   tcm__pad1;
-       unsigned short  tcm__pad2;
-       int             tcm_ifindex;
-       __u32           tcm_handle;
-       __u32           tcm_parent;
-/* tcm_block_index is used instead of tcm_parent
- * in case tcm_ifindex == TCM_IFINDEX_MAGIC_BLOCK
- */
-#define tcm_block_index tcm_parent
-       __u32           tcm_info;
-};
-
-/* For manipulation of filters in shared block, tcm_ifindex is set to
- * TCM_IFINDEX_MAGIC_BLOCK, and tcm_parent is aliased to tcm_block_index
- * which is the block index.
- */
-#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
-
-enum {
-       TCA_UNSPEC,
-       TCA_KIND,
-       TCA_OPTIONS,
-       TCA_STATS,
-       TCA_XSTATS,
-       TCA_RATE,
-       TCA_FCNT,
-       TCA_STATS2,
-       TCA_STAB,
-       TCA_PAD,
-       TCA_DUMP_INVISIBLE,
-       TCA_CHAIN,
-       TCA_HW_OFFLOAD,
-       TCA_INGRESS_BLOCK,
-       TCA_EGRESS_BLOCK,
-       __TCA_MAX
-};
-
-#define TCA_MAX (__TCA_MAX - 1)
-
-#define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
-#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
-
-/********************************************************************
- *             Neighbor Discovery userland options
- ****/
-
-struct nduseroptmsg {
-       unsigned char   nduseropt_family;
-       unsigned char   nduseropt_pad1;
-       unsigned short  nduseropt_opts_len;     /* Total length of options */
-       int             nduseropt_ifindex;
-       __u8            nduseropt_icmp_type;
-       __u8            nduseropt_icmp_code;
-       unsigned short  nduseropt_pad2;
-       unsigned int    nduseropt_pad3;
-       /* Followed by one or more ND options */
-};
-
-enum {
-       NDUSEROPT_UNSPEC,
-       NDUSEROPT_SRCADDR,
-       __NDUSEROPT_MAX
-};
-
-#define NDUSEROPT_MAX  (__NDUSEROPT_MAX - 1)
-
-/* RTnetlink multicast groups - backwards compatibility for userspace */
-#define RTMGRP_LINK            1
-#define RTMGRP_NOTIFY          2
-#define RTMGRP_NEIGH           4
-#define RTMGRP_TC              8
-
-#define RTMGRP_IPV4_IFADDR     0x10
-#define RTMGRP_IPV4_MROUTE     0x20
-#define RTMGRP_IPV4_ROUTE      0x40
-#define RTMGRP_IPV4_RULE       0x80
-
-#define RTMGRP_IPV6_IFADDR     0x100
-#define RTMGRP_IPV6_MROUTE     0x200
-#define RTMGRP_IPV6_ROUTE      0x400
-#define RTMGRP_IPV6_IFINFO     0x800
-
-#define RTMGRP_DECnet_IFADDR    0x1000
-#define RTMGRP_DECnet_ROUTE     0x4000
-
-#define RTMGRP_IPV6_PREFIX     0x20000
-
-/* RTnetlink multicast groups */
-enum rtnetlink_groups {
-       RTNLGRP_NONE,
-#define RTNLGRP_NONE           RTNLGRP_NONE
-       RTNLGRP_LINK,
-#define RTNLGRP_LINK           RTNLGRP_LINK
-       RTNLGRP_NOTIFY,
-#define RTNLGRP_NOTIFY         RTNLGRP_NOTIFY
-       RTNLGRP_NEIGH,
-#define RTNLGRP_NEIGH          RTNLGRP_NEIGH
-       RTNLGRP_TC,
-#define RTNLGRP_TC             RTNLGRP_TC
-       RTNLGRP_IPV4_IFADDR,
-#define RTNLGRP_IPV4_IFADDR    RTNLGRP_IPV4_IFADDR
-       RTNLGRP_IPV4_MROUTE,
-#define        RTNLGRP_IPV4_MROUTE     RTNLGRP_IPV4_MROUTE
-       RTNLGRP_IPV4_ROUTE,
-#define RTNLGRP_IPV4_ROUTE     RTNLGRP_IPV4_ROUTE
-       RTNLGRP_IPV4_RULE,
-#define RTNLGRP_IPV4_RULE      RTNLGRP_IPV4_RULE
-       RTNLGRP_IPV6_IFADDR,
-#define RTNLGRP_IPV6_IFADDR    RTNLGRP_IPV6_IFADDR
-       RTNLGRP_IPV6_MROUTE,
-#define RTNLGRP_IPV6_MROUTE    RTNLGRP_IPV6_MROUTE
-       RTNLGRP_IPV6_ROUTE,
-#define RTNLGRP_IPV6_ROUTE     RTNLGRP_IPV6_ROUTE
-       RTNLGRP_IPV6_IFINFO,
-#define RTNLGRP_IPV6_IFINFO    RTNLGRP_IPV6_IFINFO
-       RTNLGRP_DECnet_IFADDR,
-#define RTNLGRP_DECnet_IFADDR  RTNLGRP_DECnet_IFADDR
-       RTNLGRP_NOP2,
-       RTNLGRP_DECnet_ROUTE,
-#define RTNLGRP_DECnet_ROUTE   RTNLGRP_DECnet_ROUTE
-       RTNLGRP_DECnet_RULE,
-#define RTNLGRP_DECnet_RULE    RTNLGRP_DECnet_RULE
-       RTNLGRP_NOP4,
-       RTNLGRP_IPV6_PREFIX,
-#define RTNLGRP_IPV6_PREFIX    RTNLGRP_IPV6_PREFIX
-       RTNLGRP_IPV6_RULE,
-#define RTNLGRP_IPV6_RULE      RTNLGRP_IPV6_RULE
-       RTNLGRP_ND_USEROPT,
-#define RTNLGRP_ND_USEROPT     RTNLGRP_ND_USEROPT
-       RTNLGRP_PHONET_IFADDR,
-#define RTNLGRP_PHONET_IFADDR  RTNLGRP_PHONET_IFADDR
-       RTNLGRP_PHONET_ROUTE,
-#define RTNLGRP_PHONET_ROUTE   RTNLGRP_PHONET_ROUTE
-       RTNLGRP_DCB,
-#define RTNLGRP_DCB            RTNLGRP_DCB
-       RTNLGRP_IPV4_NETCONF,
-#define RTNLGRP_IPV4_NETCONF   RTNLGRP_IPV4_NETCONF
-       RTNLGRP_IPV6_NETCONF,
-#define RTNLGRP_IPV6_NETCONF   RTNLGRP_IPV6_NETCONF
-       RTNLGRP_MDB,
-#define RTNLGRP_MDB            RTNLGRP_MDB
-       RTNLGRP_MPLS_ROUTE,
-#define RTNLGRP_MPLS_ROUTE     RTNLGRP_MPLS_ROUTE
-       RTNLGRP_NSID,
-#define RTNLGRP_NSID           RTNLGRP_NSID
-       RTNLGRP_MPLS_NETCONF,
-#define RTNLGRP_MPLS_NETCONF   RTNLGRP_MPLS_NETCONF
-       RTNLGRP_IPV4_MROUTE_R,
-#define RTNLGRP_IPV4_MROUTE_R  RTNLGRP_IPV4_MROUTE_R
-       RTNLGRP_IPV6_MROUTE_R,
-#define RTNLGRP_IPV6_MROUTE_R  RTNLGRP_IPV6_MROUTE_R
-       __RTNLGRP_MAX
-};
-#define RTNLGRP_MAX    (__RTNLGRP_MAX - 1)
-
-/* TC action piece */
-struct tcamsg {
-       unsigned char   tca_family;
-       unsigned char   tca__pad1;
-       unsigned short  tca__pad2;
-};
-
-enum {
-       TCA_ROOT_UNSPEC,
-       TCA_ROOT_TAB,
-#define TCA_ACT_TAB TCA_ROOT_TAB
-#define TCAA_MAX TCA_ROOT_TAB
-       TCA_ROOT_FLAGS,
-       TCA_ROOT_COUNT,
-       TCA_ROOT_TIME_DELTA, /* in msecs */
-       __TCA_ROOT_MAX,
-#define        TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
-};
-
-#define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
-#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
-/* tcamsg flags stored in attribute TCA_ROOT_FLAGS
- *
- * TCA_FLAG_LARGE_DUMP_ON user->kernel to request for larger than TCA_ACT_MAX_PRIO
- * actions in a dump. All dump responses will contain the number of actions
- * being dumped stored in for user app's consumption in TCA_ROOT_COUNT
- *
- */
-#define TCA_FLAG_LARGE_DUMP_ON         (1 << 0)
-
-/* New extended info filters for IFLA_EXT_MASK */
-#define RTEXT_FILTER_VF                (1 << 0)
-#define RTEXT_FILTER_BRVLAN    (1 << 1)
-#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
-#define        RTEXT_FILTER_SKIP_STATS (1 << 3)
-
-/* End of information exported to user level */
-
-
-
-#endif /* __LINUX_RTNETLINK_H */
diff --git a/include/linux/sockios.h b/include/linux/sockios.h
deleted file mode 100644 (file)
index d393e9e..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions of the socket-level I/O control calls.
- *
- * Version:    @(#)sockios.h   1.0.2   03/09/93
- *
- * Authors:    Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_SOCKIOS_H
-#define _LINUX_SOCKIOS_H
-
-#include <asm/sockios.h>
-
-/* Linux-specific socket ioctls */
-#define SIOCINQ                FIONREAD
-#define SIOCOUTQ       TIOCOUTQ        /* output queue size (not sent + not acked) */
-
-#define SOCK_IOC_TYPE  0x89
-
-/* Routing table calls. */
-#define SIOCADDRT      0x890B          /* add routing table entry      */
-#define SIOCDELRT      0x890C          /* delete routing table entry   */
-#define SIOCRTMSG      0x890D          /* unused                       */
-
-/* Socket configuration controls. */
-#define SIOCGIFNAME    0x8910          /* get iface name               */
-#define SIOCSIFLINK    0x8911          /* set iface channel            */
-#define SIOCGIFCONF    0x8912          /* get iface list               */
-#define SIOCGIFFLAGS   0x8913          /* get flags                    */
-#define SIOCSIFFLAGS   0x8914          /* set flags                    */
-#define SIOCGIFADDR    0x8915          /* get PA address               */
-#define SIOCSIFADDR    0x8916          /* set PA address               */
-#define SIOCGIFDSTADDR 0x8917          /* get remote PA address        */
-#define SIOCSIFDSTADDR 0x8918          /* set remote PA address        */
-#define SIOCGIFBRDADDR 0x8919          /* get broadcast PA address     */
-#define SIOCSIFBRDADDR 0x891a          /* set broadcast PA address     */
-#define SIOCGIFNETMASK 0x891b          /* get network PA mask          */
-#define SIOCSIFNETMASK 0x891c          /* set network PA mask          */
-#define SIOCGIFMETRIC  0x891d          /* get metric                   */
-#define SIOCSIFMETRIC  0x891e          /* set metric                   */
-#define SIOCGIFMEM     0x891f          /* get memory address (BSD)     */
-#define SIOCSIFMEM     0x8920          /* set memory address (BSD)     */
-#define SIOCGIFMTU     0x8921          /* get MTU size                 */
-#define SIOCSIFMTU     0x8922          /* set MTU size                 */
-#define SIOCSIFNAME    0x8923          /* set interface name */
-#define        SIOCSIFHWADDR   0x8924          /* set hardware address         */
-#define SIOCGIFENCAP   0x8925          /* get/set encapsulations       */
-#define SIOCSIFENCAP   0x8926          
-#define SIOCGIFHWADDR  0x8927          /* Get hardware address         */
-#define SIOCGIFSLAVE   0x8929          /* Driver slaving support       */
-#define SIOCSIFSLAVE   0x8930
-#define SIOCADDMULTI   0x8931          /* Multicast address lists      */
-#define SIOCDELMULTI   0x8932
-#define SIOCGIFINDEX   0x8933          /* name -> if_index mapping     */
-#define SIOGIFINDEX    SIOCGIFINDEX    /* misprint compatibility :-)   */
-#define SIOCSIFPFLAGS  0x8934          /* set/get extended flags set   */
-#define SIOCGIFPFLAGS  0x8935
-#define SIOCDIFADDR    0x8936          /* delete PA address            */
-#define        SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
-#define SIOCGIFCOUNT   0x8938          /* get number of devices */
-
-#define SIOCGIFBR      0x8940          /* Bridging support             */
-#define SIOCSIFBR      0x8941          /* Set bridging options         */
-
-#define SIOCGIFTXQLEN  0x8942          /* Get the tx queue length      */
-#define SIOCSIFTXQLEN  0x8943          /* Set the tx queue length      */
-
-/* SIOCGIFDIVERT was:  0x8944          Frame diversion support */
-/* SIOCSIFDIVERT was:  0x8945          Set frame diversion options */
-
-#define SIOCETHTOOL    0x8946          /* Ethtool interface            */
-
-#define SIOCGMIIPHY    0x8947          /* Get address of MII PHY in use. */
-#define SIOCGMIIREG    0x8948          /* Read MII PHY register.       */
-#define SIOCSMIIREG    0x8949          /* Write MII PHY register.      */
-
-#define SIOCWANDEV     0x894A          /* get/set netdev parameters    */
-
-#define SIOCOUTQNSD    0x894B          /* output queue size (not sent only) */
-#define SIOCGSKNS      0x894C          /* get socket network namespace */
-
-/* ARP cache control calls. */
-                   /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
-#define SIOCDARP       0x8953          /* delete ARP table entry       */
-#define SIOCGARP       0x8954          /* get ARP table entry          */
-#define SIOCSARP       0x8955          /* set ARP table entry          */
-
-/* RARP cache control calls. */
-#define SIOCDRARP      0x8960          /* delete RARP table entry      */
-#define SIOCGRARP      0x8961          /* get RARP table entry         */
-#define SIOCSRARP      0x8962          /* set RARP table entry         */
-
-/* Driver configuration calls */
-
-#define SIOCGIFMAP     0x8970          /* Get device parameters        */
-#define SIOCSIFMAP     0x8971          /* Set device parameters        */
-
-/* DLCI configuration calls */
-
-#define SIOCADDDLCI    0x8980          /* Create new DLCI device       */
-#define SIOCDELDLCI    0x8981          /* Delete DLCI device           */
-
-#define SIOCGIFVLAN    0x8982          /* 802.1Q VLAN support          */
-#define SIOCSIFVLAN    0x8983          /* Set 802.1Q VLAN options      */
-
-/* bonding calls */
-
-#define SIOCBONDENSLAVE        0x8990          /* enslave a device to the bond */
-#define SIOCBONDRELEASE 0x8991         /* release a slave from the bond*/
-#define SIOCBONDSETHWADDR      0x8992  /* set the hw addr of the bond  */
-#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
-#define SIOCBONDINFOQUERY      0x8994  /* rtn info about bond state    */
-#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
-                       
-/* bridge calls */
-#define SIOCBRADDBR     0x89a0         /* create new bridge device     */
-#define SIOCBRDELBR     0x89a1         /* remove bridge device         */
-#define SIOCBRADDIF    0x89a2          /* add interface to bridge      */
-#define SIOCBRDELIF    0x89a3          /* remove interface from bridge */
-
-/* hardware time stamping: parameters in linux/net_tstamp.h */
-#define SIOCSHWTSTAMP  0x89b0          /* set and get config           */
-#define SIOCGHWTSTAMP  0x89b1          /* get config                   */
-
-/* Device private ioctl calls */
-
-/*
- *     These 16 ioctls are available to devices via the do_ioctl() device
- *     vector. Each device should include this file and redefine these names
- *     as their own. Because these are device dependent it is a good idea
- *     _NOT_ to issue them to random objects and hope.
- *
- *     THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
- */
-#define SIOCDEVPRIVATE 0x89F0  /* to 89FF */
-
-/*
- *     These 16 ioctl calls are protocol private
- */
-#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
-#endif /* _LINUX_SOCKIOS_H */
diff --git a/include/linux/types.h b/include/linux/types.h
deleted file mode 100644 (file)
index 999cb0f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _LINUX_TYPES_H
-#define _LINUX_TYPES_H
-
-#include <asm/types.h>
-
-#ifndef __ASSEMBLY__
-
-#include <linux/posix_types.h>
-
-
-/*
- * Below are truly Linux-specific types that should never collide with
- * any application/library that wants linux/types.h.
- */
-
-#ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
-#else
-#define __bitwise__
-#endif
-#define __bitwise __bitwise__
-
-typedef __u16 __bitwise __le16;
-typedef __u16 __bitwise __be16;
-typedef __u32 __bitwise __le32;
-typedef __u32 __bitwise __be32;
-typedef __u64 __bitwise __le64;
-typedef __u64 __bitwise __be64;
-
-typedef __u16 __bitwise __sum16;
-typedef __u32 __bitwise __wsum;
-
-/*
- * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
- * common 32/64-bit compat problems.
- * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
- * architectures) and to 8-byte boundaries on 64-bit architectures.  The new
- * aligned_64 type enforces 8-byte alignment so that structs containing
- * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
- * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
- */
-#define __aligned_u64 __u64 __attribute__((aligned(8)))
-#define __aligned_be64 __be64 __attribute__((aligned(8)))
-#define __aligned_le64 __le64 __attribute__((aligned(8)))
-
-typedef unsigned __bitwise __poll_t;
-
-#endif /*  __ASSEMBLY__ */
-#endif /* _LINUX_TYPES_H */
diff --git a/include/linux/wireless.h b/include/linux/wireless.h
deleted file mode 100644 (file)
index 5de7306..0000000
+++ /dev/null
@@ -1,1110 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * This file define a set of standard wireless extensions
- *
- * Version :   22      16.3.07
- *
- * Authors :   Jean Tourrilhes - HPL - <jt@hpl.hp.com>
- * Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved.
- */
-
-#ifndef _LINUX_WIRELESS_H
-#define _LINUX_WIRELESS_H
-
-/************************** DOCUMENTATION **************************/
-/*
- * Initial APIs (1996 -> onward) :
- * -----------------------------
- * Basically, the wireless extensions are for now a set of standard ioctl
- * call + /proc/net/wireless
- *
- * The entry /proc/net/wireless give statistics and information on the
- * driver.
- * This is better than having each driver having its entry because
- * its centralised and we may remove the driver module safely.
- *
- * Ioctl are used to configure the driver and issue commands.  This is
- * better than command line options of insmod because we may want to
- * change dynamically (while the driver is running) some parameters.
- *
- * The ioctl mechanimsm are copied from standard devices ioctl.
- * We have the list of command plus a structure descibing the
- * data exchanged...
- * Note that to add these ioctl, I was obliged to modify :
- *     # net/core/dev.c (two place + add include)
- *     # net/ipv4/af_inet.c (one place + add include)
- *
- * /proc/net/wireless is a copy of /proc/net/dev.
- * We have a structure for data passed from the driver to /proc/net/wireless
- * Too add this, I've modified :
- *     # net/core/dev.c (two other places)
- *     # include/linux/netdevice.h (one place)
- *     # include/linux/proc_fs.h (one place)
- *
- * New driver API (2002 -> onward) :
- * -------------------------------
- * This file is only concerned with the user space API and common definitions.
- * The new driver API is defined and documented in :
- *     # include/net/iw_handler.h
- *
- * Note as well that /proc/net/wireless implementation has now moved in :
- *     # net/core/wireless.c
- *
- * Wireless Events (2002 -> onward) :
- * --------------------------------
- * Events are defined at the end of this file, and implemented in :
- *     # net/core/wireless.c
- *
- * Other comments :
- * --------------
- * Do not add here things that are redundant with other mechanisms
- * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
- * wireless specific.
- *
- * These wireless extensions are not magic : each driver has to provide
- * support for them...
- *
- * IMPORTANT NOTE : As everything in the kernel, this is very much a
- * work in progress. Contact me if you have ideas of improvements...
- */
-
-/***************************** INCLUDES *****************************/
-
-#include <linux/types.h>               /* for __u* and __s* typedefs */
-#include <linux/socket.h>              /* for "struct sockaddr" et al  */
-#include <linux/if.h>                  /* for IFNAMSIZ and co... */
-
-/***************************** VERSION *****************************/
-/*
- * This constant is used to know the availability of the wireless
- * extensions and to know which version of wireless extensions it is
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
-#define WIRELESS_EXT   22
-
-/*
- * Changes :
- *
- * V2 to V3
- * --------
- *     Alan Cox start some incompatibles changes. I've integrated a bit more.
- *     - Encryption renamed to Encode to avoid US regulation problems
- *     - Frequency changed from float to struct to avoid problems on old 386
- *
- * V3 to V4
- * --------
- *     - Add sensitivity
- *
- * V4 to V5
- * --------
- *     - Missing encoding definitions in range
- *     - Access points stuff
- *
- * V5 to V6
- * --------
- *     - 802.11 support (ESSID ioctls)
- *
- * V6 to V7
- * --------
- *     - define IW_ESSID_MAX_SIZE and IW_MAX_AP
- *
- * V7 to V8
- * --------
- *     - Changed my e-mail address
- *     - More 802.11 support (nickname, rate, rts, frag)
- *     - List index in frequencies
- *
- * V8 to V9
- * --------
- *     - Support for 'mode of operation' (ad-hoc, managed...)
- *     - Support for unicast and multicast power saving
- *     - Change encoding to support larger tokens (>64 bits)
- *     - Updated iw_params (disable, flags) and use it for NWID
- *     - Extracted iw_point from iwreq for clarity
- *
- * V9 to V10
- * ---------
- *     - Add PM capability to range structure
- *     - Add PM modifier : MAX/MIN/RELATIVE
- *     - Add encoding option : IW_ENCODE_NOKEY
- *     - Add TxPower ioctls (work like TxRate)
- *
- * V10 to V11
- * ----------
- *     - Add WE version in range (help backward/forward compatibility)
- *     - Add retry ioctls (work like PM)
- *
- * V11 to V12
- * ----------
- *     - Add SIOCSIWSTATS to get /proc/net/wireless programatically
- *     - Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
- *     - Add new statistics (frag, retry, beacon)
- *     - Add average quality (for user space calibration)
- *
- * V12 to V13
- * ----------
- *     - Document creation of new driver API.
- *     - Extract union iwreq_data from struct iwreq (for new driver API).
- *     - Rename SIOCSIWNAME as SIOCSIWCOMMIT
- *
- * V13 to V14
- * ----------
- *     - Wireless Events support : define struct iw_event
- *     - Define additional specific event numbers
- *     - Add "addr" and "param" fields in union iwreq_data
- *     - AP scanning stuff (SIOCSIWSCAN and friends)
- *
- * V14 to V15
- * ----------
- *     - Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
- *     - Make struct iw_freq signed (both m & e), add explicit padding
- *     - Add IWEVCUSTOM for driver specific event/scanning token
- *     - Add IW_MAX_GET_SPY for driver returning a lot of addresses
- *     - Add IW_TXPOW_RANGE for range of Tx Powers
- *     - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
- *     - Add IW_MODE_MONITOR for passive monitor
- *
- * V15 to V16
- * ----------
- *     - Increase the number of bitrates in iw_range to 32 (for 802.11g)
- *     - Increase the number of frequencies in iw_range to 32 (for 802.11b+a)
- *     - Reshuffle struct iw_range for increases, add filler
- *     - Increase IW_MAX_AP to 64 for driver returning a lot of addresses
- *     - Remove IW_MAX_GET_SPY because conflict with enhanced spy support
- *     - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy"
- *     - Add IW_ENCODE_TEMP and iw_range->encoding_login_index
- *
- * V16 to V17
- * ----------
- *     - Add flags to frequency -> auto/fixed
- *     - Document (struct iw_quality *)->updated, add new flags (INVALID)
- *     - Wireless Event capability in struct iw_range
- *     - Add support for relative TxPower (yick !)
- *
- * V17 to V18 (From Jouni Malinen <j@w1.fi>)
- * ----------
- *     - Add support for WPA/WPA2
- *     - Add extended encoding configuration (SIOCSIWENCODEEXT and
- *       SIOCGIWENCODEEXT)
- *     - Add SIOCSIWGENIE/SIOCGIWGENIE
- *     - Add SIOCSIWMLME
- *     - Add SIOCSIWPMKSA
- *     - Add struct iw_range bit field for supported encoding capabilities
- *     - Add optional scan request parameters for SIOCSIWSCAN
- *     - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA
- *       related parameters (extensible up to 4096 parameter values)
- *     - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE,
- *       IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND
- *
- * V18 to V19
- * ----------
- *     - Remove (struct iw_point *)->pointer from events and streams
- *     - Remove header includes to help user space
- *     - Increase IW_ENCODING_TOKEN_MAX from 32 to 64
- *     - Add IW_QUAL_ALL_UPDATED and IW_QUAL_ALL_INVALID macros
- *     - Add explicit flag to tell stats are in dBm : IW_QUAL_DBM
- *     - Add IW_IOCTL_IDX() and IW_EVENT_IDX() macros
- *
- * V19 to V20
- * ----------
- *     - RtNetlink requests support (SET/GET)
- *
- * V20 to V21
- * ----------
- *     - Remove (struct net_device *)->get_wireless_stats()
- *     - Change length in ESSID and NICK to strlen() instead of strlen()+1
- *     - Add IW_RETRY_SHORT/IW_RETRY_LONG retry modifiers
- *     - Power/Retry relative values no longer * 100000
- *     - Add explicit flag to tell stats are in 802.11k RCPI : IW_QUAL_RCPI
- *
- * V21 to V22
- * ----------
- *     - Prevent leaking of kernel space in stream on 64 bits.
- */
-
-/**************************** CONSTANTS ****************************/
-
-/* -------------------------- IOCTL LIST -------------------------- */
-
-/* Wireless Identification */
-#define SIOCSIWCOMMIT  0x8B00          /* Commit pending changes to driver */
-#define SIOCGIWNAME    0x8B01          /* get name == wireless protocol */
-/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
- * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
- * Don't put the name of your driver there, it's useless. */
-
-/* Basic operations */
-#define SIOCSIWNWID    0x8B02          /* set network id (pre-802.11) */
-#define SIOCGIWNWID    0x8B03          /* get network id (the cell) */
-#define SIOCSIWFREQ    0x8B04          /* set channel/frequency (Hz) */
-#define SIOCGIWFREQ    0x8B05          /* get channel/frequency (Hz) */
-#define SIOCSIWMODE    0x8B06          /* set operation mode */
-#define SIOCGIWMODE    0x8B07          /* get operation mode */
-#define SIOCSIWSENS    0x8B08          /* set sensitivity (dBm) */
-#define SIOCGIWSENS    0x8B09          /* get sensitivity (dBm) */
-
-/* Informative stuff */
-#define SIOCSIWRANGE   0x8B0A          /* Unused */
-#define SIOCGIWRANGE   0x8B0B          /* Get range of parameters */
-#define SIOCSIWPRIV    0x8B0C          /* Unused */
-#define SIOCGIWPRIV    0x8B0D          /* get private ioctl interface info */
-#define SIOCSIWSTATS   0x8B0E          /* Unused */
-#define SIOCGIWSTATS   0x8B0F          /* Get /proc/net/wireless stats */
-/* SIOCGIWSTATS is strictly used between user space and the kernel, and
- * is never passed to the driver (i.e. the driver will never see it). */
-
-/* Spy support (statistics per MAC address - used for Mobile IP support) */
-#define SIOCSIWSPY     0x8B10          /* set spy addresses */
-#define SIOCGIWSPY     0x8B11          /* get spy info (quality of link) */
-#define SIOCSIWTHRSPY  0x8B12          /* set spy threshold (spy event) */
-#define SIOCGIWTHRSPY  0x8B13          /* get spy threshold */
-
-/* Access Point manipulation */
-#define SIOCSIWAP      0x8B14          /* set access point MAC addresses */
-#define SIOCGIWAP      0x8B15          /* get access point MAC addresses */
-#define SIOCGIWAPLIST  0x8B17          /* Deprecated in favor of scanning */
-#define SIOCSIWSCAN    0x8B18          /* trigger scanning (list cells) */
-#define SIOCGIWSCAN    0x8B19          /* get scanning results */
-
-/* 802.11 specific support */
-#define SIOCSIWESSID   0x8B1A          /* set ESSID (network name) */
-#define SIOCGIWESSID   0x8B1B          /* get ESSID */
-#define SIOCSIWNICKN   0x8B1C          /* set node name/nickname */
-#define SIOCGIWNICKN   0x8B1D          /* get node name/nickname */
-/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
- * within the 'iwreq' structure, so we need to use the 'data' member to
- * point to a string in user space, like it is done for RANGE... */
-
-/* Other parameters useful in 802.11 and some other devices */
-#define SIOCSIWRATE    0x8B20          /* set default bit rate (bps) */
-#define SIOCGIWRATE    0x8B21          /* get default bit rate (bps) */
-#define SIOCSIWRTS     0x8B22          /* set RTS/CTS threshold (bytes) */
-#define SIOCGIWRTS     0x8B23          /* get RTS/CTS threshold (bytes) */
-#define SIOCSIWFRAG    0x8B24          /* set fragmentation thr (bytes) */
-#define SIOCGIWFRAG    0x8B25          /* get fragmentation thr (bytes) */
-#define SIOCSIWTXPOW   0x8B26          /* set transmit power (dBm) */
-#define SIOCGIWTXPOW   0x8B27          /* get transmit power (dBm) */
-#define SIOCSIWRETRY   0x8B28          /* set retry limits and lifetime */
-#define SIOCGIWRETRY   0x8B29          /* get retry limits and lifetime */
-
-/* Encoding stuff (scrambling, hardware security, WEP...) */
-#define SIOCSIWENCODE  0x8B2A          /* set encoding token & mode */
-#define SIOCGIWENCODE  0x8B2B          /* get encoding token & mode */
-/* Power saving stuff (power management, unicast and multicast) */
-#define SIOCSIWPOWER   0x8B2C          /* set Power Management settings */
-#define SIOCGIWPOWER   0x8B2D          /* get Power Management settings */
-
-/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM).
- * This ioctl uses struct iw_point and data buffer that includes IE id and len
- * fields. More than one IE may be included in the request. Setting the generic
- * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers
- * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers
- * are required to report the used IE as a wireless event, e.g., when
- * associating with an AP. */
-#define SIOCSIWGENIE   0x8B30          /* set generic IE */
-#define SIOCGIWGENIE   0x8B31          /* get generic IE */
-
-/* WPA : IEEE 802.11 MLME requests */
-#define SIOCSIWMLME    0x8B16          /* request MLME operation; uses
-                                        * struct iw_mlme */
-/* WPA : Authentication mode parameters */
-#define SIOCSIWAUTH    0x8B32          /* set authentication mode params */
-#define SIOCGIWAUTH    0x8B33          /* get authentication mode params */
-
-/* WPA : Extended version of encoding configuration */
-#define SIOCSIWENCODEEXT 0x8B34                /* set encoding token & mode */
-#define SIOCGIWENCODEEXT 0x8B35                /* get encoding token & mode */
-
-/* WPA2 : PMKSA cache management */
-#define SIOCSIWPMKSA   0x8B36          /* PMKSA cache operation */
-
-/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
-
-/* These 32 ioctl are wireless device private, for 16 commands.
- * Each driver is free to use them for whatever purpose it chooses,
- * however the driver *must* export the description of those ioctls
- * with SIOCGIWPRIV and *must* use arguments as defined below.
- * If you don't follow those rules, DaveM is going to hate you (reason :
- * it make mixed 32/64bit operation impossible).
- */
-#define SIOCIWFIRSTPRIV        0x8BE0
-#define SIOCIWLASTPRIV 0x8BFF
-/* Previously, we were using SIOCDEVPRIVATE, but we now have our
- * separate range because of collisions with other tools such as
- * 'mii-tool'.
- * We now have 32 commands, so a bit more space ;-).
- * Also, all 'even' commands are only usable by root and don't return the
- * content of ifr/iwr to user (but you are not obliged to use the set/get
- * convention, just use every other two command). More details in iwpriv.c.
- * And I repeat : you are not forced to use them with iwpriv, but you
- * must be compliant with it.
- */
-
-/* ------------------------- IOCTL STUFF ------------------------- */
-
-/* The first and the last (range) */
-#define SIOCIWFIRST    0x8B00
-#define SIOCIWLAST     SIOCIWLASTPRIV          /* 0x8BFF */
-#define IW_IOCTL_IDX(cmd)      ((cmd) - SIOCIWFIRST)
-#define IW_HANDLER(id, func)                   \
-       [IW_IOCTL_IDX(id)] = func
-
-/* Odd : get (world access), even : set (root access) */
-#define IW_IS_SET(cmd) (!((cmd) & 0x1))
-#define IW_IS_GET(cmd) ((cmd) & 0x1)
-
-/* ----------------------- WIRELESS EVENTS ----------------------- */
-/* Those are *NOT* ioctls, do not issue request on them !!! */
-/* Most events use the same identifier as ioctl requests */
-
-#define IWEVTXDROP     0x8C00          /* Packet dropped to excessive retry */
-#define IWEVQUAL       0x8C01          /* Quality part of statistics (scan) */
-#define IWEVCUSTOM     0x8C02          /* Driver specific ascii string */
-#define IWEVREGISTERED 0x8C03          /* Discovered a new node (AP mode) */
-#define IWEVEXPIRED    0x8C04          /* Expired a node (AP mode) */
-#define IWEVGENIE      0x8C05          /* Generic IE (WPA, RSN, WMM, ..)
-                                        * (scan results); This includes id and
-                                        * length fields. One IWEVGENIE may
-                                        * contain more than one IE. Scan
-                                        * results may contain one or more
-                                        * IWEVGENIE events. */
-#define IWEVMICHAELMICFAILURE 0x8C06   /* Michael MIC failure
-                                        * (struct iw_michaelmicfailure)
-                                        */
-#define IWEVASSOCREQIE 0x8C07          /* IEs used in (Re)Association Request.
-                                        * The data includes id and length
-                                        * fields and may contain more than one
-                                        * IE. This event is required in
-                                        * Managed mode if the driver
-                                        * generates its own WPA/RSN IE. This
-                                        * should be sent just before
-                                        * IWEVREGISTERED event for the
-                                        * association. */
-#define IWEVASSOCRESPIE        0x8C08          /* IEs used in (Re)Association
-                                        * Response. The data includes id and
-                                        * length fields and may contain more
-                                        * than one IE. This may be sent
-                                        * between IWEVASSOCREQIE and
-                                        * IWEVREGISTERED events for the
-                                        * association. */
-#define IWEVPMKIDCAND  0x8C09          /* PMKID candidate for RSN
-                                        * pre-authentication
-                                        * (struct iw_pmkid_cand) */
-
-#define IWEVFIRST      0x8C00
-#define IW_EVENT_IDX(cmd)      ((cmd) - IWEVFIRST)
-
-/* ------------------------- PRIVATE INFO ------------------------- */
-/*
- * The following is used with SIOCGIWPRIV. It allow a driver to define
- * the interface (name, type of data) for its private ioctl.
- * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
- */
-
-#define IW_PRIV_TYPE_MASK      0x7000  /* Type of arguments */
-#define IW_PRIV_TYPE_NONE      0x0000
-#define IW_PRIV_TYPE_BYTE      0x1000  /* Char as number */
-#define IW_PRIV_TYPE_CHAR      0x2000  /* Char as character */
-#define IW_PRIV_TYPE_INT       0x4000  /* 32 bits int */
-#define IW_PRIV_TYPE_FLOAT     0x5000  /* struct iw_freq */
-#define IW_PRIV_TYPE_ADDR      0x6000  /* struct sockaddr */
-
-#define IW_PRIV_SIZE_FIXED     0x0800  /* Variable or fixed number of args */
-
-#define IW_PRIV_SIZE_MASK      0x07FF  /* Max number of those args */
-
-/*
- * Note : if the number of args is fixed and the size < 16 octets,
- * instead of passing a pointer we will put args in the iwreq struct...
- */
-
-/* ----------------------- OTHER CONSTANTS ----------------------- */
-
-/* Maximum frequencies in the range struct */
-#define IW_MAX_FREQUENCIES     32
-/* Note : if you have something like 80 frequencies,
- * don't increase this constant and don't fill the frequency list.
- * The user will be able to set by channel anyway... */
-
-/* Maximum bit rates in the range struct */
-#define IW_MAX_BITRATES                32
-
-/* Maximum tx powers in the range struct */
-#define IW_MAX_TXPOWER         8
-/* Note : if you more than 8 TXPowers, just set the max and min or
- * a few of them in the struct iw_range. */
-
-/* Maximum of address that you may set with SPY */
-#define IW_MAX_SPY             8
-
-/* Maximum of address that you may get in the
-   list of access points in range */
-#define IW_MAX_AP              64
-
-/* Maximum size of the ESSID and NICKN strings */
-#define IW_ESSID_MAX_SIZE      32
-
-/* Modes of operation */
-#define IW_MODE_AUTO   0       /* Let the driver decides */
-#define IW_MODE_ADHOC  1       /* Single cell network */
-#define IW_MODE_INFRA  2       /* Multi cell network, roaming, ... */
-#define IW_MODE_MASTER 3       /* Synchronisation master or Access Point */
-#define IW_MODE_REPEAT 4       /* Wireless Repeater (forwarder) */
-#define IW_MODE_SECOND 5       /* Secondary master/repeater (backup) */
-#define IW_MODE_MONITOR        6       /* Passive monitor (listen only) */
-#define IW_MODE_MESH   7       /* Mesh (IEEE 802.11s) network */
-
-/* Statistics flags (bitmask in updated) */
-#define IW_QUAL_QUAL_UPDATED   0x01    /* Value was updated since last read */
-#define IW_QUAL_LEVEL_UPDATED  0x02
-#define IW_QUAL_NOISE_UPDATED  0x04
-#define IW_QUAL_ALL_UPDATED    0x07
-#define IW_QUAL_DBM            0x08    /* Level + Noise are dBm */
-#define IW_QUAL_QUAL_INVALID   0x10    /* Driver doesn't provide value */
-#define IW_QUAL_LEVEL_INVALID  0x20
-#define IW_QUAL_NOISE_INVALID  0x40
-#define IW_QUAL_RCPI           0x80    /* Level + Noise are 802.11k RCPI */
-#define IW_QUAL_ALL_INVALID    0x70
-
-/* Frequency flags */
-#define IW_FREQ_AUTO           0x00    /* Let the driver decides */
-#define IW_FREQ_FIXED          0x01    /* Force a specific value */
-
-/* Maximum number of size of encoding token available
- * they are listed in the range structure */
-#define IW_MAX_ENCODING_SIZES  8
-
-/* Maximum size of the encoding token in bytes */
-#define IW_ENCODING_TOKEN_MAX  64      /* 512 bits (for now) */
-
-/* Flags for encoding (along with the token) */
-#define IW_ENCODE_INDEX                0x00FF  /* Token index (if needed) */
-#define IW_ENCODE_FLAGS                0xFF00  /* Flags defined below */
-#define IW_ENCODE_MODE         0xF000  /* Modes defined below */
-#define IW_ENCODE_DISABLED     0x8000  /* Encoding disabled */
-#define IW_ENCODE_ENABLED      0x0000  /* Encoding enabled */
-#define IW_ENCODE_RESTRICTED   0x4000  /* Refuse non-encoded packets */
-#define IW_ENCODE_OPEN         0x2000  /* Accept non-encoded packets */
-#define IW_ENCODE_NOKEY                0x0800  /* Key is write only, so not present */
-#define IW_ENCODE_TEMP         0x0400  /* Temporary key */
-
-/* Power management flags available (along with the value, if any) */
-#define IW_POWER_ON            0x0000  /* No details... */
-#define IW_POWER_TYPE          0xF000  /* Type of parameter */
-#define IW_POWER_PERIOD                0x1000  /* Value is a period/duration of  */
-#define IW_POWER_TIMEOUT       0x2000  /* Value is a timeout (to go asleep) */
-#define IW_POWER_MODE          0x0F00  /* Power Management mode */
-#define IW_POWER_UNICAST_R     0x0100  /* Receive only unicast messages */
-#define IW_POWER_MULTICAST_R   0x0200  /* Receive only multicast messages */
-#define IW_POWER_ALL_R         0x0300  /* Receive all messages though PM */
-#define IW_POWER_FORCE_S       0x0400  /* Force PM procedure for sending unicast */
-#define IW_POWER_REPEATER      0x0800  /* Repeat broadcast messages in PM period */
-#define IW_POWER_MODIFIER      0x000F  /* Modify a parameter */
-#define IW_POWER_MIN           0x0001  /* Value is a minimum  */
-#define IW_POWER_MAX           0x0002  /* Value is a maximum */
-#define IW_POWER_RELATIVE      0x0004  /* Value is not in seconds/ms/us */
-
-/* Transmit Power flags available */
-#define IW_TXPOW_TYPE          0x00FF  /* Type of value */
-#define IW_TXPOW_DBM           0x0000  /* Value is in dBm */
-#define IW_TXPOW_MWATT         0x0001  /* Value is in mW */
-#define IW_TXPOW_RELATIVE      0x0002  /* Value is in arbitrary units */
-#define IW_TXPOW_RANGE         0x1000  /* Range of value between min/max */
-
-/* Retry limits and lifetime flags available */
-#define IW_RETRY_ON            0x0000  /* No details... */
-#define IW_RETRY_TYPE          0xF000  /* Type of parameter */
-#define IW_RETRY_LIMIT         0x1000  /* Maximum number of retries*/
-#define IW_RETRY_LIFETIME      0x2000  /* Maximum duration of retries in us */
-#define IW_RETRY_MODIFIER      0x00FF  /* Modify a parameter */
-#define IW_RETRY_MIN           0x0001  /* Value is a minimum  */
-#define IW_RETRY_MAX           0x0002  /* Value is a maximum */
-#define IW_RETRY_RELATIVE      0x0004  /* Value is not in seconds/ms/us */
-#define IW_RETRY_SHORT         0x0010  /* Value is for short packets  */
-#define IW_RETRY_LONG          0x0020  /* Value is for long packets */
-
-/* Scanning request flags */
-#define IW_SCAN_DEFAULT                0x0000  /* Default scan of the driver */
-#define IW_SCAN_ALL_ESSID      0x0001  /* Scan all ESSIDs */
-#define IW_SCAN_THIS_ESSID     0x0002  /* Scan only this ESSID */
-#define IW_SCAN_ALL_FREQ       0x0004  /* Scan all Frequencies */
-#define IW_SCAN_THIS_FREQ      0x0008  /* Scan only this Frequency */
-#define IW_SCAN_ALL_MODE       0x0010  /* Scan all Modes */
-#define IW_SCAN_THIS_MODE      0x0020  /* Scan only this Mode */
-#define IW_SCAN_ALL_RATE       0x0040  /* Scan all Bit-Rates */
-#define IW_SCAN_THIS_RATE      0x0080  /* Scan only this Bit-Rate */
-/* struct iw_scan_req scan_type */
-#define IW_SCAN_TYPE_ACTIVE 0
-#define IW_SCAN_TYPE_PASSIVE 1
-/* Maximum size of returned data */
-#define IW_SCAN_MAX_DATA       4096    /* In bytes */
-
-/* Scan capability flags - in (struct iw_range *)->scan_capa */
-#define IW_SCAN_CAPA_NONE              0x00
-#define IW_SCAN_CAPA_ESSID             0x01
-#define IW_SCAN_CAPA_BSSID             0x02
-#define IW_SCAN_CAPA_CHANNEL   0x04
-#define IW_SCAN_CAPA_MODE              0x08
-#define IW_SCAN_CAPA_RATE              0x10
-#define IW_SCAN_CAPA_TYPE              0x20
-#define IW_SCAN_CAPA_TIME              0x40
-
-/* Max number of char in custom event - use multiple of them if needed */
-#define IW_CUSTOM_MAX          256     /* In bytes */
-
-/* Generic information element */
-#define IW_GENERIC_IE_MAX      1024
-
-/* MLME requests (SIOCSIWMLME / struct iw_mlme) */
-#define IW_MLME_DEAUTH         0
-#define IW_MLME_DISASSOC       1
-#define IW_MLME_AUTH           2
-#define IW_MLME_ASSOC          3
-
-/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */
-#define IW_AUTH_INDEX          0x0FFF
-#define IW_AUTH_FLAGS          0xF000
-/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095)
- * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the
- * parameter that is being set/get to; value will be read/written to
- * struct iw_param value field) */
-#define IW_AUTH_WPA_VERSION            0
-#define IW_AUTH_CIPHER_PAIRWISE                1
-#define IW_AUTH_CIPHER_GROUP           2
-#define IW_AUTH_KEY_MGMT               3
-#define IW_AUTH_TKIP_COUNTERMEASURES   4
-#define IW_AUTH_DROP_UNENCRYPTED       5
-#define IW_AUTH_80211_AUTH_ALG         6
-#define IW_AUTH_WPA_ENABLED            7
-#define IW_AUTH_RX_UNENCRYPTED_EAPOL   8
-#define IW_AUTH_ROAMING_CONTROL                9
-#define IW_AUTH_PRIVACY_INVOKED                10
-#define IW_AUTH_CIPHER_GROUP_MGMT      11
-#define IW_AUTH_MFP                    12
-
-/* IW_AUTH_WPA_VERSION values (bit field) */
-#define IW_AUTH_WPA_VERSION_DISABLED   0x00000001
-#define IW_AUTH_WPA_VERSION_WPA                0x00000002
-#define IW_AUTH_WPA_VERSION_WPA2       0x00000004
-
-/* IW_AUTH_PAIRWISE_CIPHER, IW_AUTH_GROUP_CIPHER, and IW_AUTH_CIPHER_GROUP_MGMT
- * values (bit field) */
-#define IW_AUTH_CIPHER_NONE    0x00000001
-#define IW_AUTH_CIPHER_WEP40   0x00000002
-#define IW_AUTH_CIPHER_TKIP    0x00000004
-#define IW_AUTH_CIPHER_CCMP    0x00000008
-#define IW_AUTH_CIPHER_WEP104  0x00000010
-#define IW_AUTH_CIPHER_AES_CMAC        0x00000020
-
-/* IW_AUTH_KEY_MGMT values (bit field) */
-#define IW_AUTH_KEY_MGMT_802_1X        1
-#define IW_AUTH_KEY_MGMT_PSK   2
-
-/* IW_AUTH_80211_AUTH_ALG values (bit field) */
-#define IW_AUTH_ALG_OPEN_SYSTEM        0x00000001
-#define IW_AUTH_ALG_SHARED_KEY 0x00000002
-#define IW_AUTH_ALG_LEAP       0x00000004
-
-/* IW_AUTH_ROAMING_CONTROL values */
-#define IW_AUTH_ROAMING_ENABLE 0       /* driver/firmware based roaming */
-#define IW_AUTH_ROAMING_DISABLE        1       /* user space program used for roaming
-                                        * control */
-
-/* IW_AUTH_MFP (management frame protection) values */
-#define IW_AUTH_MFP_DISABLED   0       /* MFP disabled */
-#define IW_AUTH_MFP_OPTIONAL   1       /* MFP optional */
-#define IW_AUTH_MFP_REQUIRED   2       /* MFP required */
-
-/* SIOCSIWENCODEEXT definitions */
-#define IW_ENCODE_SEQ_MAX_SIZE 8
-/* struct iw_encode_ext ->alg */
-#define IW_ENCODE_ALG_NONE     0
-#define IW_ENCODE_ALG_WEP      1
-#define IW_ENCODE_ALG_TKIP     2
-#define IW_ENCODE_ALG_CCMP     3
-#define IW_ENCODE_ALG_PMK      4
-#define IW_ENCODE_ALG_AES_CMAC 5
-/* struct iw_encode_ext ->ext_flags */
-#define IW_ENCODE_EXT_TX_SEQ_VALID     0x00000001
-#define IW_ENCODE_EXT_RX_SEQ_VALID     0x00000002
-#define IW_ENCODE_EXT_GROUP_KEY                0x00000004
-#define IW_ENCODE_EXT_SET_TX_KEY       0x00000008
-
-/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */
-#define IW_MICFAILURE_KEY_ID   0x00000003 /* Key ID 0..3 */
-#define IW_MICFAILURE_GROUP    0x00000004
-#define IW_MICFAILURE_PAIRWISE 0x00000008
-#define IW_MICFAILURE_STAKEY   0x00000010
-#define IW_MICFAILURE_COUNT    0x00000060 /* 1 or 2 (0 = count not supported)
-                                           */
-
-/* Bit field values for enc_capa in struct iw_range */
-#define IW_ENC_CAPA_WPA                0x00000001
-#define IW_ENC_CAPA_WPA2       0x00000002
-#define IW_ENC_CAPA_CIPHER_TKIP        0x00000004
-#define IW_ENC_CAPA_CIPHER_CCMP        0x00000008
-#define IW_ENC_CAPA_4WAY_HANDSHAKE     0x00000010
-
-/* Event capability macros - in (struct iw_range *)->event_capa
- * Because we have more than 32 possible events, we use an array of
- * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */
-#define IW_EVENT_CAPA_BASE(cmd)                ((cmd >= SIOCIWFIRSTPRIV) ? \
-                                        (cmd - SIOCIWFIRSTPRIV + 0x60) : \
-                                        (cmd - SIOCIWFIRST))
-#define IW_EVENT_CAPA_INDEX(cmd)       (IW_EVENT_CAPA_BASE(cmd) >> 5)
-#define IW_EVENT_CAPA_MASK(cmd)                (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
-/* Event capability constants - event autogenerated by the kernel
- * This list is valid for most 802.11 devices, customise as needed... */
-#define IW_EVENT_CAPA_K_0      (IW_EVENT_CAPA_MASK(0x8B04) | \
-                                IW_EVENT_CAPA_MASK(0x8B06) | \
-                                IW_EVENT_CAPA_MASK(0x8B1A))
-#define IW_EVENT_CAPA_K_1      (IW_EVENT_CAPA_MASK(0x8B2A))
-/* "Easy" macro to set events in iw_range (less efficient) */
-#define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
-#define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
-
-
-/****************************** TYPES ******************************/
-
-/* --------------------------- SUBTYPES --------------------------- */
-/*
- *     Generic format for most parameters that fit in an int
- */
-struct iw_param {
-  __s32                value;          /* The value of the parameter itself */
-  __u8         fixed;          /* Hardware should not use auto select */
-  __u8         disabled;       /* Disable the feature */
-  __u16                flags;          /* Various specifc flags (if any) */
-};
-
-/*
- *     For all data larger than 16 octets, we need to use a
- *     pointer to memory allocated in user space.
- */
-struct iw_point {
-  void *pointer;       /* Pointer to the data  (in user space) */
-  __u16                length;         /* number of fields or size in bytes */
-  __u16                flags;          /* Optional params */
-};
-
-
-/*
- *     A frequency
- *     For numbers lower than 10^9, we encode the number in 'm' and
- *     set 'e' to 0
- *     For number greater than 10^9, we divide it by the lowest power
- *     of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
- *     The power of 10 is in 'e', the result of the division is in 'm'.
- */
-struct iw_freq {
-       __s32           m;              /* Mantissa */
-       __s16           e;              /* Exponent */
-       __u8            i;              /* List index (when in range struct) */
-       __u8            flags;          /* Flags (fixed/auto) */
-};
-
-/*
- *     Quality of the link
- */
-struct iw_quality {
-       __u8            qual;           /* link quality (%retries, SNR,
-                                          %missed beacons or better...) */
-       __u8            level;          /* signal level (dBm) */
-       __u8            noise;          /* noise level (dBm) */
-       __u8            updated;        /* Flags to know if updated */
-};
-
-/*
- *     Packet discarded in the wireless adapter due to
- *     "wireless" specific problems...
- *     Note : the list of counter and statistics in net_device_stats
- *     is already pretty exhaustive, and you should use that first.
- *     This is only additional stats...
- */
-struct iw_discarded {
-       __u32           nwid;           /* Rx : Wrong nwid/essid */
-       __u32           code;           /* Rx : Unable to code/decode (WEP) */
-       __u32           fragment;       /* Rx : Can't perform MAC reassembly */
-       __u32           retries;        /* Tx : Max MAC retries num reached */
-       __u32           misc;           /* Others cases */
-};
-
-/*
- *     Packet/Time period missed in the wireless adapter due to
- *     "wireless" specific problems...
- */
-struct iw_missed {
-       __u32           beacon;         /* Missed beacons/superframe */
-};
-
-/*
- *     Quality range (for spy threshold)
- */
-struct iw_thrspy {
-       struct sockaddr         addr;           /* Source address (hw/mac) */
-       struct iw_quality       qual;           /* Quality of the link */
-       struct iw_quality       low;            /* Low threshold */
-       struct iw_quality       high;           /* High threshold */
-};
-
-/*
- *     Optional data for scan request
- *
- *     Note: these optional parameters are controlling parameters for the
- *     scanning behavior, these do not apply to getting scan results
- *     (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and
- *     provide a merged results with all BSSes even if the previous scan
- *     request limited scanning to a subset, e.g., by specifying an SSID.
- *     Especially, scan results are required to include an entry for the
- *     current BSS if the driver is in Managed mode and associated with an AP.
- */
-struct iw_scan_req {
-       __u8            scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */
-       __u8            essid_len;
-       __u8            num_channels; /* num entries in channel_list;
-                                      * 0 = scan all allowed channels */
-       __u8            flags; /* reserved as padding; use zero, this may
-                               * be used in the future for adding flags
-                               * to request different scan behavior */
-       struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or
-                               * individual address of a specific BSS */
-
-       /*
-        * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using
-        * the current ESSID. This allows scan requests for specific ESSID
-        * without having to change the current ESSID and potentially breaking
-        * the current association.
-        */
-       __u8            essid[IW_ESSID_MAX_SIZE];
-
-       /*
-        * Optional parameters for changing the default scanning behavior.
-        * These are based on the MLME-SCAN.request from IEEE Std 802.11.
-        * TU is 1.024 ms. If these are set to 0, driver is expected to use
-        * reasonable default values. min_channel_time defines the time that
-        * will be used to wait for the first reply on each channel. If no
-        * replies are received, next channel will be scanned after this. If
-        * replies are received, total time waited on the channel is defined by
-        * max_channel_time.
-        */
-       __u32           min_channel_time; /* in TU */
-       __u32           max_channel_time; /* in TU */
-
-       struct iw_freq  channel_list[IW_MAX_FREQUENCIES];
-};
-
-/* ------------------------- WPA SUPPORT ------------------------- */
-
-/*
- *     Extended data structure for get/set encoding (this is used with
- *     SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_*
- *     flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and
- *     only the data contents changes (key data -> this structure, including
- *     key data).
- *
- *     If the new key is the first group key, it will be set as the default
- *     TX key. Otherwise, default TX key index is only changed if
- *     IW_ENCODE_EXT_SET_TX_KEY flag is set.
- *
- *     Key will be changed with SIOCSIWENCODEEXT in all cases except for
- *     special "change TX key index" operation which is indicated by setting
- *     key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY.
- *
- *     tx_seq/rx_seq are only used when respective
- *     IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal
- *     TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start
- *     TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally
- *     used only by an Authenticator (AP or an IBSS station) to get the
- *     current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and
- *     RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for
- *     debugging/testing.
- */
-struct iw_encode_ext {
-       __u32           ext_flags; /* IW_ENCODE_EXT_* */
-       __u8            tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-       __u8            rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-       struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast
-                              * (group) keys or unicast address for
-                              * individual keys */
-       __u16           alg; /* IW_ENCODE_ALG_* */
-       __u16           key_len;
-       __u8            key[0];
-};
-
-/* SIOCSIWMLME data */
-struct iw_mlme {
-       __u16           cmd; /* IW_MLME_* */
-       __u16           reason_code;
-       struct sockaddr addr;
-};
-
-/* SIOCSIWPMKSA data */
-#define IW_PMKSA_ADD           1
-#define IW_PMKSA_REMOVE                2
-#define IW_PMKSA_FLUSH         3
-
-#define IW_PMKID_LEN   16
-
-struct iw_pmksa {
-       __u32           cmd; /* IW_PMKSA_* */
-       struct sockaddr bssid;
-       __u8            pmkid[IW_PMKID_LEN];
-};
-
-/* IWEVMICHAELMICFAILURE data */
-struct iw_michaelmicfailure {
-       __u32           flags;
-       struct sockaddr src_addr;
-       __u8            tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-};
-
-/* IWEVPMKIDCAND data */
-#define IW_PMKID_CAND_PREAUTH  0x00000001 /* RNS pre-authentication enabled */
-struct iw_pmkid_cand {
-       __u32           flags; /* IW_PMKID_CAND_* */
-       __u32           index; /* the smaller the index, the higher the
-                               * priority */
-       struct sockaddr bssid;
-};
-
-/* ------------------------ WIRELESS STATS ------------------------ */
-/*
- * Wireless statistics (used for /proc/net/wireless)
- */
-struct iw_statistics {
-       __u16           status;         /* Status
-                                        * - device dependent for now */
-
-       struct iw_quality       qual;           /* Quality of the link
-                                                * (instant/mean/max) */
-       struct iw_discarded     discard;        /* Packet discarded counts */
-       struct iw_missed        miss;           /* Packet missed counts */
-};
-
-/* ------------------------ IOCTL REQUEST ------------------------ */
-/*
- * This structure defines the payload of an ioctl, and is used
- * below.
- *
- * Note that this structure should fit on the memory footprint
- * of iwreq (which is the same as ifreq), which mean a max size of
- * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
- * You should check this when increasing the structures defined
- * above in this file...
- */
-union iwreq_data {
-       /* Config - generic */
-       char            name[IFNAMSIZ];
-       /* Name : used to verify the presence of  wireless extensions.
-        * Name of the protocol/provider... */
-
-       struct iw_point essid;          /* Extended network name */
-       struct iw_param nwid;           /* network id (or domain - the cell) */
-       struct iw_freq  freq;           /* frequency or channel :
-                                        * 0-1000 = channel
-                                        * > 1000 = frequency in Hz */
-
-       struct iw_param sens;           /* signal level threshold */
-       struct iw_param bitrate;        /* default bit rate */
-       struct iw_param txpower;        /* default transmit power */
-       struct iw_param rts;            /* RTS threshold threshold */
-       struct iw_param frag;           /* Fragmentation threshold */
-       __u32           mode;           /* Operation mode */
-       struct iw_param retry;          /* Retry limits & lifetime */
-
-       struct iw_point encoding;       /* Encoding stuff : tokens */
-       struct iw_param power;          /* PM duration/timeout */
-       struct iw_quality qual;         /* Quality part of statistics */
-
-       struct sockaddr ap_addr;        /* Access point address */
-       struct sockaddr addr;           /* Destination address (hw/mac) */
-
-       struct iw_param param;          /* Other small parameters */
-       struct iw_point data;           /* Other large parameters */
-};
-
-/*
- * The structure to exchange data for ioctl.
- * This structure is the same as 'struct ifreq', but (re)defined for
- * convenience...
- * Do I need to remind you about structure size (32 octets) ?
- */
-struct iwreq {
-       union
-       {
-               char    ifrn_name[IFNAMSIZ];    /* if name, e.g. "eth0" */
-       } ifr_ifrn;
-
-       /* Data part (defined just above) */
-       union iwreq_data        u;
-};
-
-/* -------------------------- IOCTL DATA -------------------------- */
-/*
- *     For those ioctl which want to exchange mode data that what could
- *     fit in the above structure...
- */
-
-/*
- *     Range of parameters
- */
-
-struct iw_range {
-       /* Informative stuff (to choose between different interface) */
-       __u32           throughput;     /* To give an idea... */
-       /* In theory this value should be the maximum benchmarked
-        * TCP/IP throughput, because with most of these devices the
-        * bit rate is meaningless (overhead an co) to estimate how
-        * fast the connection will go and pick the fastest one.
-        * I suggest people to play with Netperf or any benchmark...
-        */
-
-       /* NWID (or domain id) */
-       __u32           min_nwid;       /* Minimal NWID we are able to set */
-       __u32           max_nwid;       /* Maximal NWID we are able to set */
-
-       /* Old Frequency (backward compat - moved lower ) */
-       __u16           old_num_channels;
-       __u8            old_num_frequency;
-
-       /* Scan capabilities */
-       __u8            scan_capa;      /* IW_SCAN_CAPA_* bit field */
-
-       /* Wireless event capability bitmasks */
-       __u32           event_capa[6];
-
-       /* signal level threshold range */
-       __s32           sensitivity;
-
-       /* Quality of link & SNR stuff */
-       /* Quality range (link, level, noise)
-        * If the quality is absolute, it will be in the range [0 ; max_qual],
-        * if the quality is dBm, it will be in the range [max_qual ; 0].
-        * Don't forget that we use 8 bit arithmetics... */
-       struct iw_quality       max_qual;       /* Quality of the link */
-       /* This should contain the average/typical values of the quality
-        * indicator. This should be the threshold between a "good" and
-        * a "bad" link (example : monitor going from green to orange).
-        * Currently, user space apps like quality monitors don't have any
-        * way to calibrate the measurement. With this, they can split
-        * the range between 0 and max_qual in different quality level
-        * (using a geometric subdivision centered on the average).
-        * I expect that people doing the user space apps will feedback
-        * us on which value we need to put in each driver... */
-       struct iw_quality       avg_qual;       /* Quality of the link */
-
-       /* Rates */
-       __u8            num_bitrates;   /* Number of entries in the list */
-       __s32           bitrate[IW_MAX_BITRATES];       /* list, in bps */
-
-       /* RTS threshold */
-       __s32           min_rts;        /* Minimal RTS threshold */
-       __s32           max_rts;        /* Maximal RTS threshold */
-
-       /* Frag threshold */
-       __s32           min_frag;       /* Minimal frag threshold */
-       __s32           max_frag;       /* Maximal frag threshold */
-
-       /* Power Management duration & timeout */
-       __s32           min_pmp;        /* Minimal PM period */
-       __s32           max_pmp;        /* Maximal PM period */
-       __s32           min_pmt;        /* Minimal PM timeout */
-       __s32           max_pmt;        /* Maximal PM timeout */
-       __u16           pmp_flags;      /* How to decode max/min PM period */
-       __u16           pmt_flags;      /* How to decode max/min PM timeout */
-       __u16           pm_capa;        /* What PM options are supported */
-
-       /* Encoder stuff */
-       __u16   encoding_size[IW_MAX_ENCODING_SIZES];   /* Different token sizes */
-       __u8    num_encoding_sizes;     /* Number of entry in the list */
-       __u8    max_encoding_tokens;    /* Max number of tokens */
-       /* For drivers that need a "login/passwd" form */
-       __u8    encoding_login_index;   /* token index for login token */
-
-       /* Transmit power */
-       __u16           txpower_capa;   /* What options are supported */
-       __u8            num_txpower;    /* Number of entries in the list */
-       __s32           txpower[IW_MAX_TXPOWER];        /* list, in bps */
-
-       /* Wireless Extension version info */
-       __u8            we_version_compiled;    /* Must be WIRELESS_EXT */
-       __u8            we_version_source;      /* Last update of source */
-
-       /* Retry limits and lifetime */
-       __u16           retry_capa;     /* What retry options are supported */
-       __u16           retry_flags;    /* How to decode max/min retry limit */
-       __u16           r_time_flags;   /* How to decode max/min retry life */
-       __s32           min_retry;      /* Minimal number of retries */
-       __s32           max_retry;      /* Maximal number of retries */
-       __s32           min_r_time;     /* Minimal retry lifetime */
-       __s32           max_r_time;     /* Maximal retry lifetime */
-
-       /* Frequency */
-       __u16           num_channels;   /* Number of channels [0; num - 1] */
-       __u8            num_frequency;  /* Number of entry in the list */
-       struct iw_freq  freq[IW_MAX_FREQUENCIES];       /* list */
-       /* Note : this frequency list doesn't need to fit channel numbers,
-        * because each entry contain its channel index */
-
-       __u32           enc_capa;       /* IW_ENC_CAPA_* bit field */
-};
-
-/*
- * Private ioctl interface information
- */
-
-struct iw_priv_args {
-       __u32           cmd;            /* Number of the ioctl to issue */
-       __u16           set_args;       /* Type and number of args */
-       __u16           get_args;       /* Type and number of args */
-       char            name[IFNAMSIZ]; /* Name of the extension */
-};
-
-/* ----------------------- WIRELESS EVENTS ----------------------- */
-/*
- * Wireless events are carried through the rtnetlink socket to user
- * space. They are encapsulated in the IFLA_WIRELESS field of
- * a RTM_NEWLINK message.
- */
-
-/*
- * A Wireless Event. Contains basically the same data as the ioctl...
- */
-struct iw_event {
-       __u16           len;                    /* Real length of this stuff */
-       __u16           cmd;                    /* Wireless IOCTL */
-       union iwreq_data        u;              /* IOCTL fixed payload */
-};
-
-/* Size of the Event prefix (including padding and alignement junk) */
-#define IW_EV_LCP_LEN  (sizeof(struct iw_event) - sizeof(union iwreq_data))
-/* Size of the various events */
-#define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ)
-#define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(__u32))
-#define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq))
-#define IW_EV_PARAM_LEN        (IW_EV_LCP_LEN + sizeof(struct iw_param))
-#define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr))
-#define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality))
-
-/* iw_point events are special. First, the payload (extra data) come at
- * the end of the event, so they are bigger than IW_EV_POINT_LEN. Second,
- * we omit the pointer, so start at an offset. */
-#define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) - \
-                         (char *) NULL)
-#define IW_EV_POINT_LEN        (IW_EV_LCP_LEN + sizeof(struct iw_point) - \
-                        IW_EV_POINT_OFF)
-
-
-/* Size of the Event prefix when packed in stream */
-#define IW_EV_LCP_PK_LEN       (4)
-/* Size of the various events when packed in stream */
-#define IW_EV_CHAR_PK_LEN      (IW_EV_LCP_PK_LEN + IFNAMSIZ)
-#define IW_EV_UINT_PK_LEN      (IW_EV_LCP_PK_LEN + sizeof(__u32))
-#define IW_EV_FREQ_PK_LEN      (IW_EV_LCP_PK_LEN + sizeof(struct iw_freq))
-#define IW_EV_PARAM_PK_LEN     (IW_EV_LCP_PK_LEN + sizeof(struct iw_param))
-#define IW_EV_ADDR_PK_LEN      (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr))
-#define IW_EV_QUAL_PK_LEN      (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality))
-#define IW_EV_POINT_PK_LEN     (IW_EV_LCP_PK_LEN + 4)
-
-#endif /* _LINUX_WIRELESS_H */
diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h
deleted file mode 100644 (file)
index fa65914..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*     $OpenBSD: if_ether.h,v 1.47 2010/02/08 13:32:50 claudio Exp $   */
-/*     $NetBSD: if_ether.h,v 1.22 1996/05/11 13:00:00 mycroft Exp $    */
-
-/*
- * Copyright (c) 1982, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)if_ether.h  8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _NETINET_IF_ETHER_H_
-#define _NETINET_IF_ETHER_H_
-
-/*
- * Some basic Ethernet constants.
- */
-#define        ETHER_ADDR_LEN  6       /* Ethernet address length              */
-#define ETHER_TYPE_LEN 2       /* Ethernet type field length           */
-#define ETHER_CRC_LEN  4       /* Ethernet CRC length                  */
-#define ETHER_HDR_LEN  ((ETHER_ADDR_LEN * 2) + ETHER_TYPE_LEN)
-#define ETHER_MIN_LEN  64      /* Minimum frame length, CRC included   */
-#define ETHER_MAX_LEN  1518    /* Maximum frame length, CRC included   */
-#define ETHER_MAX_DIX_LEN      1536    /* Maximum DIX frame length     */
-
-/*
- * Some Ethernet extensions.
- */
-#define ETHER_VLAN_ENCAP_LEN   4       /* len of 802.1Q VLAN encapsulation */
-
-/*
- * Mbuf adjust factor to force 32-bit alignment of IP header.
- * Drivers should do m_adj(m, ETHER_ALIGN) when setting up a
- * receive so the upper layers get the IP header properly aligned
- * past the 14-byte Ethernet header.
- */
-#define ETHER_ALIGN    2       /* driver adjust for IP hdr alignment */
-
-/*
- * Ethernet address - 6 octets
- */
-struct ether_addr {
-       u_int8_t ether_addr_octet[ETHER_ADDR_LEN];
-};
-
-/*
- * The length of the combined header.
- */
-struct ether_header {
-       u_int8_t  ether_dhost[ETHER_ADDR_LEN];
-       u_int8_t  ether_shost[ETHER_ADDR_LEN];
-       u_int16_t ether_type;
-};
-
-#define ETHERTYPE_VLAN          0x8100  /* IEEE 802.1Q VLAN tagging (XXX conflicts) */
-#define ETHERTYPE_LLDP          0x88CC  /* Link Layer Discovery Protocol */
-
-#define        ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) /* is address mcast/bcast? */
-
-#define        ETHERMTU        (ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
-#define        ETHERMIN        (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
-
-/*
- * Ethernet CRC32 polynomials (big- and little-endian verions).
- */
-#define        ETHER_CRC_POLY_LE       0xedb88320
-#define        ETHER_CRC_POLY_BE       0x04c11db6
-
-#endif /* _NETINET_IF_ETHER_H_ */
diff --git a/include/sys/queue.h b/include/sys/queue.h
deleted file mode 100644 (file)
index daf4553..0000000
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * Copyright (c) 1991, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)queue.h     8.5 (Berkeley) 8/20/94
- */
-
-#ifndef        _SYS_QUEUE_H_
-#define        _SYS_QUEUE_H_
-
-/*
- * This file defines five types of data structures: singly-linked lists,
- * lists, simple queues, tail queues, and circular queues.
- *
- * A singly-linked list is headed by a single forward pointer. The
- * elements are singly linked for minimum space and pointer manipulation
- * overhead at the expense of O(n) removal for arbitrary elements. New
- * elements can be added to the list after an existing element or at the
- * head of the list.  Elements being removed from the head of the list
- * should use the explicit macro for this purpose for optimum
- * efficiency. A singly-linked list may only be traversed in the forward
- * direction.  Singly-linked lists are ideal for applications with large
- * datasets and few or no removals or for implementing a LIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A simple queue is headed by a pair of pointers, one the head of the
- * list and the other to the tail of the list. The elements are singly
- * linked to save space, so elements can only be removed from the
- * head of the list. New elements can be added to the list after
- * an existing element, at the head of the list, or at the end of the
- * list. A simple queue may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * A circle queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or after
- * an existing element, at the head of the list, or at the end of the list.
- * A circle queue may be traversed in either direction, but has a more
- * complex end of list detection.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- */
-
-/*
- * List definitions.
- */
-#define        LIST_HEAD(name, type)                                           \
-struct name {                                                          \
-       struct type *lh_first;  /* first element */                     \
-}
-
-#define        LIST_HEAD_INITIALIZER(head)                                     \
-       { NULL }
-
-#define        LIST_ENTRY(type)                                                \
-struct {                                                               \
-       struct type *le_next;   /* next element */                      \
-       struct type **le_prev;  /* address of previous next element */  \
-}
-
-/*
- * List functions.
- */
-#define        LIST_INIT(head) do {                                            \
-       (head)->lh_first = NULL;                                        \
-} while (/*CONSTCOND*/0)
-
-#define        LIST_INSERT_AFTER(listelm, elm, field) do {                     \
-       if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)  \
-               (listelm)->field.le_next->field.le_prev =               \
-                   &(elm)->field.le_next;                              \
-       (listelm)->field.le_next = (elm);                               \
-       (elm)->field.le_prev = &(listelm)->field.le_next;               \
-} while (/*CONSTCOND*/0)
-
-#define        LIST_INSERT_BEFORE(listelm, elm, field) do {                    \
-       (elm)->field.le_prev = (listelm)->field.le_prev;                \
-       (elm)->field.le_next = (listelm);                               \
-       *(listelm)->field.le_prev = (elm);                              \
-       (listelm)->field.le_prev = &(elm)->field.le_next;               \
-} while (/*CONSTCOND*/0)
-
-#define        LIST_INSERT_HEAD(head, elm, field) do {                         \
-       if (((elm)->field.le_next = (head)->lh_first) != NULL)          \
-               (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
-       (head)->lh_first = (elm);                                       \
-       (elm)->field.le_prev = &(head)->lh_first;                       \
-} while (/*CONSTCOND*/0)
-
-#define        LIST_REMOVE(elm, field) do {                                    \
-       if ((elm)->field.le_next != NULL)                               \
-               (elm)->field.le_next->field.le_prev =                   \
-                   (elm)->field.le_prev;                               \
-       *(elm)->field.le_prev = (elm)->field.le_next;                   \
-} while (/*CONSTCOND*/0)
-
-#define        LIST_FOREACH(var, head, field)                                  \
-       for ((var) = ((head)->lh_first);                                \
-               (var);                                                  \
-               (var) = ((var)->field.le_next))
-
-/*
- * List access methods.
- */
-#define        LIST_EMPTY(head)                ((head)->lh_first == NULL)
-#define        LIST_FIRST(head)                ((head)->lh_first)
-#define        LIST_NEXT(elm, field)           ((elm)->field.le_next)
-
-
-/*
- * Singly-linked List definitions.
- */
-#define        SLIST_HEAD(name, type)                                          \
-struct name {                                                          \
-       struct type *slh_first; /* first element */                     \
-}
-
-#define        SLIST_HEAD_INITIALIZER(head)                                    \
-       { NULL }
-
-#define        SLIST_ENTRY(type)                                               \
-struct {                                                               \
-       struct type *sle_next;  /* next element */                      \
-}
-
-/*
- * Singly-linked List functions.
- */
-#define        SLIST_INIT(head) do {                                           \
-       (head)->slh_first = NULL;                                       \
-} while (/*CONSTCOND*/0)
-
-#define        SLIST_INSERT_AFTER(slistelm, elm, field) do {                   \
-       (elm)->field.sle_next = (slistelm)->field.sle_next;             \
-       (slistelm)->field.sle_next = (elm);                             \
-} while (/*CONSTCOND*/0)
-
-#define        SLIST_INSERT_HEAD(head, elm, field) do {                        \
-       (elm)->field.sle_next = (head)->slh_first;                      \
-       (head)->slh_first = (elm);                                      \
-} while (/*CONSTCOND*/0)
-
-#define        SLIST_REMOVE_HEAD(head, field) do {                             \
-       (head)->slh_first = (head)->slh_first->field.sle_next;          \
-} while (/*CONSTCOND*/0)
-
-#define        SLIST_REMOVE(head, elm, type, field) do {                       \
-       if ((head)->slh_first == (elm)) {                               \
-               SLIST_REMOVE_HEAD((head), field);                       \
-       }                                                               \
-       else {                                                          \
-               struct type *curelm = (head)->slh_first;                \
-               while(curelm->field.sle_next != (elm))                  \
-                       curelm = curelm->field.sle_next;                \
-               curelm->field.sle_next =                                \
-                   curelm->field.sle_next->field.sle_next;             \
-       }                                                               \
-} while (/*CONSTCOND*/0)
-
-#define        SLIST_FOREACH(var, head, field)                                 \
-       for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
-
-/*
- * Singly-linked List access methods.
- */
-#define        SLIST_EMPTY(head)       ((head)->slh_first == NULL)
-#define        SLIST_FIRST(head)       ((head)->slh_first)
-#define        SLIST_NEXT(elm, field)  ((elm)->field.sle_next)
-
-
-/*
- * Singly-linked Tail queue declarations.
- */
-#define        STAILQ_HEAD(name, type)                                 \
-struct name {                                                          \
-       struct type *stqh_first;        /* first element */                     \
-       struct type **stqh_last;        /* addr of last next element */         \
-}
-
-#define        STAILQ_HEAD_INITIALIZER(head)                                   \
-       { NULL, &(head).stqh_first }
-
-#define        STAILQ_ENTRY(type)                                              \
-struct {                                                               \
-       struct type *stqe_next; /* next element */                      \
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define        STAILQ_INIT(head) do {                                          \
-       (head)->stqh_first = NULL;                                      \
-       (head)->stqh_last = &(head)->stqh_first;                                \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_INSERT_HEAD(head, elm, field) do {                       \
-       if (((elm)->field.stqe_next = (head)->stqh_first) == NULL)      \
-               (head)->stqh_last = &(elm)->field.stqe_next;            \
-       (head)->stqh_first = (elm);                                     \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_INSERT_TAIL(head, elm, field) do {                       \
-       (elm)->field.stqe_next = NULL;                                  \
-       *(head)->stqh_last = (elm);                                     \
-       (head)->stqh_last = &(elm)->field.stqe_next;                    \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_INSERT_AFTER(head, listelm, elm, field) do {             \
-       if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
-               (head)->stqh_last = &(elm)->field.stqe_next;            \
-       (listelm)->field.stqe_next = (elm);                             \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_REMOVE_HEAD(head, field) do {                            \
-       if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
-               (head)->stqh_last = &(head)->stqh_first;                        \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_REMOVE(head, elm, type, field) do {                      \
-       if ((head)->stqh_first == (elm)) {                              \
-               STAILQ_REMOVE_HEAD((head), field);                      \
-       } else {                                                        \
-               struct type *curelm = (head)->stqh_first;               \
-               while (curelm->field.stqe_next != (elm))                        \
-                       curelm = curelm->field.stqe_next;               \
-               if ((curelm->field.stqe_next =                          \
-                       curelm->field.stqe_next->field.stqe_next) == NULL) \
-                           (head)->stqh_last = &(curelm)->field.stqe_next; \
-       }                                                               \
-} while (/*CONSTCOND*/0)
-
-#define        STAILQ_FOREACH(var, head, field)                                \
-       for ((var) = ((head)->stqh_first);                              \
-               (var);                                                  \
-               (var) = ((var)->field.stqe_next))
-
-#define        STAILQ_CONCAT(head1, head2) do {                                \
-       if (!STAILQ_EMPTY((head2))) {                                   \
-               *(head1)->stqh_last = (head2)->stqh_first;              \
-               (head1)->stqh_last = (head2)->stqh_last;                \
-               STAILQ_INIT((head2));                                   \
-       }                                                               \
-} while (/*CONSTCOND*/0)
-
-/*
- * Singly-linked Tail queue access methods.
- */
-#define        STAILQ_EMPTY(head)      ((head)->stqh_first == NULL)
-#define        STAILQ_FIRST(head)      ((head)->stqh_first)
-#define        STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-
-
-/*
- * Simple queue definitions.
- */
-#define        SIMPLEQ_HEAD(name, type)                                        \
-struct name {                                                          \
-       struct type *sqh_first; /* first element */                     \
-       struct type **sqh_last; /* addr of last next element */         \
-}
-
-#define        SIMPLEQ_HEAD_INITIALIZER(head)                                  \
-       { NULL, &(head).sqh_first }
-
-#define        SIMPLEQ_ENTRY(type)                                             \
-struct {                                                               \
-       struct type *sqe_next;  /* next element */                      \
-}
-
-/*
- * Simple queue functions.
- */
-#define        SIMPLEQ_INIT(head) do {                                         \
-       (head)->sqh_first = NULL;                                       \
-       (head)->sqh_last = &(head)->sqh_first;                          \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_INSERT_HEAD(head, elm, field) do {                      \
-       if (((elm)->field.sqe_next = (head)->sqh_first) == NULL)        \
-               (head)->sqh_last = &(elm)->field.sqe_next;              \
-       (head)->sqh_first = (elm);                                      \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_INSERT_TAIL(head, elm, field) do {                      \
-       (elm)->field.sqe_next = NULL;                                   \
-       *(head)->sqh_last = (elm);                                      \
-       (head)->sqh_last = &(elm)->field.sqe_next;                      \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do {            \
-       if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
-               (head)->sqh_last = &(elm)->field.sqe_next;              \
-       (listelm)->field.sqe_next = (elm);                              \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_REMOVE_HEAD(head, field) do {                           \
-       if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
-               (head)->sqh_last = &(head)->sqh_first;                  \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_REMOVE(head, elm, type, field) do {                     \
-       if ((head)->sqh_first == (elm)) {                               \
-               SIMPLEQ_REMOVE_HEAD((head), field);                     \
-       } else {                                                        \
-               struct type *curelm = (head)->sqh_first;                \
-               while (curelm->field.sqe_next != (elm))                 \
-                       curelm = curelm->field.sqe_next;                \
-               if ((curelm->field.sqe_next =                           \
-                       curelm->field.sqe_next->field.sqe_next) == NULL) \
-                           (head)->sqh_last = &(curelm)->field.sqe_next; \
-       }                                                               \
-} while (/*CONSTCOND*/0)
-
-#define        SIMPLEQ_FOREACH(var, head, field)                               \
-       for ((var) = ((head)->sqh_first);                               \
-               (var);                                                  \
-               (var) = ((var)->field.sqe_next))
-
-/*
- * Simple queue access methods.
- */
-#define        SIMPLEQ_EMPTY(head)             ((head)->sqh_first == NULL)
-#define        SIMPLEQ_FIRST(head)             ((head)->sqh_first)
-#define        SIMPLEQ_NEXT(elm, field)        ((elm)->field.sqe_next)
-
-
-/*
- * Tail queue definitions.
- */
-#define        _TAILQ_HEAD(name, type, qual)                                   \
-struct name {                                                          \
-       qual type *tqh_first;           /* first element */             \
-       qual type *qual *tqh_last;      /* addr of last next element */ \
-}
-#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,)
-
-#define        TAILQ_HEAD_INITIALIZER(head)                                    \
-       { NULL, &(head).tqh_first }
-
-#define        _TAILQ_ENTRY(type, qual)                                        \
-struct {                                                               \
-       qual type *tqe_next;            /* next element */              \
-       qual type *qual *tqe_prev;      /* address of previous next element */\
-}
-#define TAILQ_ENTRY(type)      _TAILQ_ENTRY(struct type,)
-
-/*
- * Tail queue functions.
- */
-#define        TAILQ_INIT(head) do {                                           \
-       (head)->tqh_first = NULL;                                       \
-       (head)->tqh_last = &(head)->tqh_first;                          \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_INSERT_HEAD(head, elm, field) do {                        \
-       if (((elm)->field.tqe_next = (head)->tqh_first) != NULL)        \
-               (head)->tqh_first->field.tqe_prev =                     \
-                   &(elm)->field.tqe_next;                             \
-       else                                                            \
-               (head)->tqh_last = &(elm)->field.tqe_next;              \
-       (head)->tqh_first = (elm);                                      \
-       (elm)->field.tqe_prev = &(head)->tqh_first;                     \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_INSERT_TAIL(head, elm, field) do {                        \
-       (elm)->field.tqe_next = NULL;                                   \
-       (elm)->field.tqe_prev = (head)->tqh_last;                       \
-       *(head)->tqh_last = (elm);                                      \
-       (head)->tqh_last = &(elm)->field.tqe_next;                      \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_INSERT_AFTER(head, listelm, elm, field) do {              \
-       if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
-               (elm)->field.tqe_next->field.tqe_prev =                 \
-                   &(elm)->field.tqe_next;                             \
-       else                                                            \
-               (head)->tqh_last = &(elm)->field.tqe_next;              \
-       (listelm)->field.tqe_next = (elm);                              \
-       (elm)->field.tqe_prev = &(listelm)->field.tqe_next;             \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_INSERT_BEFORE(listelm, elm, field) do {                   \
-       (elm)->field.tqe_prev = (listelm)->field.tqe_prev;              \
-       (elm)->field.tqe_next = (listelm);                              \
-       *(listelm)->field.tqe_prev = (elm);                             \
-       (listelm)->field.tqe_prev = &(elm)->field.tqe_next;             \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_REMOVE(head, elm, field) do {                             \
-       if (((elm)->field.tqe_next) != NULL)                            \
-               (elm)->field.tqe_next->field.tqe_prev =                 \
-                   (elm)->field.tqe_prev;                              \
-       else                                                            \
-               (head)->tqh_last = (elm)->field.tqe_prev;               \
-       *(elm)->field.tqe_prev = (elm)->field.tqe_next;                 \
-} while (/*CONSTCOND*/0)
-
-#define        TAILQ_FOREACH(var, head, field)                                 \
-       for ((var) = ((head)->tqh_first);                               \
-               (var);                                                  \
-               (var) = ((var)->field.tqe_next))
-
-#define        TAILQ_FOREACH_REVERSE(var, head, headname, field)               \
-       for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));    \
-               (var);                                                  \
-               (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
-
-#define        TAILQ_CONCAT(head1, head2, field) do {                          \
-       if (!TAILQ_EMPTY(head2)) {                                      \
-               *(head1)->tqh_last = (head2)->tqh_first;                \
-               (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
-               (head1)->tqh_last = (head2)->tqh_last;                  \
-               TAILQ_INIT((head2));                                    \
-       }                                                               \
-} while (/*CONSTCOND*/0)
-
-/*
- * Tail queue access methods.
- */
-#define        TAILQ_EMPTY(head)               ((head)->tqh_first == NULL)
-#define        TAILQ_FIRST(head)               ((head)->tqh_first)
-#define        TAILQ_NEXT(elm, field)          ((elm)->field.tqe_next)
-
-#define        TAILQ_LAST(head, headname) \
-       (*(((struct headname *)((head)->tqh_last))->tqh_last))
-#define        TAILQ_PREV(elm, headname, field) \
-       (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-
-/*
- * Circular queue definitions.
- */
-#define        CIRCLEQ_HEAD(name, type)                                        \
-struct name {                                                          \
-       struct type *cqh_first;         /* first element */             \
-       struct type *cqh_last;          /* last element */              \
-}
-
-#define        CIRCLEQ_HEAD_INITIALIZER(head)                                  \
-       { (void *)&head, (void *)&head }
-
-#define        CIRCLEQ_ENTRY(type)                                             \
-struct {                                                               \
-       struct type *cqe_next;          /* next element */              \
-       struct type *cqe_prev;          /* previous element */          \
-}
-
-/*
- * Circular queue functions.
- */
-#define        CIRCLEQ_INIT(head) do {                                         \
-       (head)->cqh_first = (void *)(head);                             \
-       (head)->cqh_last = (void *)(head);                              \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do {            \
-       (elm)->field.cqe_next = (listelm)->field.cqe_next;              \
-       (elm)->field.cqe_prev = (listelm);                              \
-       if ((listelm)->field.cqe_next == (void *)(head))                \
-               (head)->cqh_last = (elm);                               \
-       else                                                            \
-               (listelm)->field.cqe_next->field.cqe_prev = (elm);      \
-       (listelm)->field.cqe_next = (elm);                              \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do {           \
-       (elm)->field.cqe_next = (listelm);                              \
-       (elm)->field.cqe_prev = (listelm)->field.cqe_prev;              \
-       if ((listelm)->field.cqe_prev == (void *)(head))                \
-               (head)->cqh_first = (elm);                              \
-       else                                                            \
-               (listelm)->field.cqe_prev->field.cqe_next = (elm);      \
-       (listelm)->field.cqe_prev = (elm);                              \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_INSERT_HEAD(head, elm, field) do {                      \
-       (elm)->field.cqe_next = (head)->cqh_first;                      \
-       (elm)->field.cqe_prev = (void *)(head);                         \
-       if ((head)->cqh_last == (void *)(head))                         \
-               (head)->cqh_last = (elm);                               \
-       else                                                            \
-               (head)->cqh_first->field.cqe_prev = (elm);              \
-       (head)->cqh_first = (elm);                                      \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_INSERT_TAIL(head, elm, field) do {                      \
-       (elm)->field.cqe_next = (void *)(head);                         \
-       (elm)->field.cqe_prev = (head)->cqh_last;                       \
-       if ((head)->cqh_first == (void *)(head))                        \
-               (head)->cqh_first = (elm);                              \
-       else                                                            \
-               (head)->cqh_last->field.cqe_next = (elm);               \
-       (head)->cqh_last = (elm);                                       \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_REMOVE(head, elm, field) do {                           \
-       if ((elm)->field.cqe_next == (void *)(head))                    \
-               (head)->cqh_last = (elm)->field.cqe_prev;               \
-       else                                                            \
-               (elm)->field.cqe_next->field.cqe_prev =                 \
-                   (elm)->field.cqe_prev;                              \
-       if ((elm)->field.cqe_prev == (void *)(head))                    \
-               (head)->cqh_first = (elm)->field.cqe_next;              \
-       else                                                            \
-               (elm)->field.cqe_prev->field.cqe_next =                 \
-                   (elm)->field.cqe_next;                              \
-} while (/*CONSTCOND*/0)
-
-#define        CIRCLEQ_FOREACH(var, head, field)                               \
-       for ((var) = ((head)->cqh_first);                               \
-               (var) != (const void *)(head);                          \
-               (var) = ((var)->field.cqe_next))
-
-#define        CIRCLEQ_FOREACH_REVERSE(var, head, field)                       \
-       for ((var) = ((head)->cqh_last);                                \
-               (var) != (const void *)(head);                          \
-               (var) = ((var)->field.cqe_prev))
-
-/*
- * Circular queue access methods.
- */
-#define        CIRCLEQ_EMPTY(head)             ((head)->cqh_first == (void *)(head))
-#define        CIRCLEQ_FIRST(head)             ((head)->cqh_first)
-#define        CIRCLEQ_LAST(head)              ((head)->cqh_last)
-#define        CIRCLEQ_NEXT(elm, field)        ((elm)->field.cqe_next)
-#define        CIRCLEQ_PREV(elm, field)        ((elm)->field.cqe_prev)
-
-#define CIRCLEQ_LOOP_NEXT(head, elm, field)                            \
-       (((elm)->field.cqe_next == (void *)(head))                      \
-           ? ((head)->cqh_first)                                       \
-           : (elm->field.cqe_next))
-#define CIRCLEQ_LOOP_PREV(head, elm, field)                            \
-       (((elm)->field.cqe_prev == (void *)(head))                      \
-           ? ((head)->cqh_last)                                        \
-           : (elm->field.cqe_prev))
-
-#endif /* sys/queue.h */
index ed538c260eac575c2ddb6ba30ced53e99d4f45e6..2f2bd17f3bb68cfa8a5337b0d1015f537ffac31f 100644 (file)
 #include <string.h>
 #include <sys/queue.h>
 #include <sys/types.h>
-#include <netinet/if_ether.h>
+#include <sys/socket.h>
 #include <netinet/in.h>
+#include <net/if_arp.h>
+#include <netinet/if_ether.h>
 #include <sys/un.h>
 
 #include "lldp-tlv.h"
@@ -265,7 +267,9 @@ void         send_fd(enum priv_context, int);
                 (ether dst 00:e0:2b:00:00:00)"
 */
 
-#define ETH_P_LLDP 0x88cc
+#ifndef ETH_P_LLDP
+# define ETH_P_LLDP 0x88cc
+#endif
 #define LLDPD_FILTER_F                         \
        { 0x30, 0, 0, 0x00000000 },             \
        { 0x54, 0, 0, 0x00000001 },             \
index 0b4b19eb8c47f4ad581970d814f0f0b3607a614f..c7c444297bc87d0ce7453dad018e9ea5fec3a0a7 100644 (file)
@@ -123,7 +123,7 @@ static int _lldp_send(struct lldpd *global,
 
        if (!(
              /* LLDP frame */
-             POKE_UINT16(ETHERTYPE_LLDP)))
+             POKE_UINT16(ETH_P_LLDP)))
                goto toobig;
 
        /* Chassis ID */
@@ -693,7 +693,7 @@ lldp_decode(struct lldpd *cfg, char *frame, int s,
                goto malformed;
        }
        PEEK_DISCARD(ETHER_ADDR_LEN);   /* Skip source address */
-       if (PEEK_UINT16 != ETHERTYPE_LLDP) {
+       if (PEEK_UINT16 != ETH_P_LLDP) {
                log_info("lldp", "non LLDP frame received on %s",
                    hardware->h_ifname);
                goto malformed;