mirror of
https://github.com/systemd/systemd
synced 2026-04-11 17:44:58 +02:00
Compare commits
7 Commits
04b457d8ef
...
a2ccfc9ccb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2ccfc9ccb | ||
|
|
4ac8526215 | ||
|
|
bfa6bd1be0 | ||
|
|
254a7d66c6 | ||
|
|
d25cc8321c | ||
|
|
49ad8da779 | ||
|
|
b886649c95 |
7
.github/workflows/build_test.sh
vendored
7
.github/workflows/build_test.sh
vendored
@ -80,9 +80,10 @@ if [[ "$COMPILER" == clang ]]; then
|
|||||||
# llvm package if available in such cases to avoid that.
|
# llvm package if available in such cases to avoid that.
|
||||||
if ! apt show --quiet "llvm-$COMPILER_VERSION" &>/dev/null; then
|
if ! apt show --quiet "llvm-$COMPILER_VERSION" &>/dev/null; then
|
||||||
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
|
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
|
||||||
# Following snippet was borrowed from https://apt.llvm.org/llvm.sh
|
# Following snippet was partly borrowed from https://apt.llvm.org/llvm.sh
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --yes --dearmor --output /usr/share/keyrings/apt-llvm-org.gpg
|
||||||
add-apt-repository -y "deb http://apt.llvm.org/$RELEASE/ llvm-toolchain-$RELEASE-$COMPILER_VERSION main"
|
printf "deb [signed-by=/usr/share/keyrings/apt-llvm-org.gpg] http://apt.llvm.org/%s/ llvm-toolchain-%s-%s main\n" \
|
||||||
|
"$RELEASE" "$RELEASE" "$COMPILER_VERSION" >/etc/apt/sources.list.d/llvm-toolchain.list
|
||||||
PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION")
|
PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION")
|
||||||
fi
|
fi
|
||||||
elif [[ "$COMPILER" == gcc ]]; then
|
elif [[ "$COMPILER" == gcc ]]; then
|
||||||
|
|||||||
@ -573,7 +573,11 @@
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>Local=</varname></term>
|
<term><varname>Local=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Configures local IP address.</para>
|
<para>Configures local IP address. It must be an address on the underlying interface of the
|
||||||
|
VXLAN interface, or one of the special values <literal>ipv4_link_local</literal>,
|
||||||
|
<literal>ipv6_link_local</literal>, <literal>dhcp4</literal>, <literal>dhcp6</literal>, and
|
||||||
|
<literal>slaac</literal>. If one of the special values is specified, an address which matches
|
||||||
|
the corresponding type on the underlying interface will be used. Defaults to unset.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|||||||
@ -288,6 +288,7 @@ struct btrfs_ioctl_fs_info_args {
|
|||||||
* first mount when booting older kernel versions.
|
* first mount when booting older kernel versions.
|
||||||
*/
|
*/
|
||||||
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
|
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
|
||||||
|
#define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
|
||||||
|
|
||||||
#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
|
#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
|
||||||
#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
|
#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
|
||||||
@ -770,10 +771,16 @@ struct btrfs_ioctl_received_subvol_args {
|
|||||||
*/
|
*/
|
||||||
#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
|
#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read the protocol version in the structure
|
||||||
|
*/
|
||||||
|
#define BTRFS_SEND_FLAG_VERSION 0x8
|
||||||
|
|
||||||
#define BTRFS_SEND_FLAG_MASK \
|
#define BTRFS_SEND_FLAG_MASK \
|
||||||
(BTRFS_SEND_FLAG_NO_FILE_DATA | \
|
(BTRFS_SEND_FLAG_NO_FILE_DATA | \
|
||||||
BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | \
|
BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | \
|
||||||
BTRFS_SEND_FLAG_OMIT_END_CMD)
|
BTRFS_SEND_FLAG_OMIT_END_CMD | \
|
||||||
|
BTRFS_SEND_FLAG_VERSION)
|
||||||
|
|
||||||
struct btrfs_ioctl_send_args {
|
struct btrfs_ioctl_send_args {
|
||||||
__s64 send_fd; /* in */
|
__s64 send_fd; /* in */
|
||||||
@ -781,7 +788,8 @@ struct btrfs_ioctl_send_args {
|
|||||||
__u64 *clone_sources; /* in */
|
__u64 *clone_sources; /* in */
|
||||||
__u64 parent_root; /* in */
|
__u64 parent_root; /* in */
|
||||||
__u64 flags; /* in */
|
__u64 flags; /* in */
|
||||||
__u64 reserved[4]; /* in */
|
__u32 version; /* in */
|
||||||
|
__u8 reserved[28]; /* in */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -118,6 +118,29 @@
|
|||||||
#define BTRFS_INODE_REF_KEY 12
|
#define BTRFS_INODE_REF_KEY 12
|
||||||
#define BTRFS_INODE_EXTREF_KEY 13
|
#define BTRFS_INODE_EXTREF_KEY 13
|
||||||
#define BTRFS_XATTR_ITEM_KEY 24
|
#define BTRFS_XATTR_ITEM_KEY 24
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fs verity items are stored under two different key types on disk.
|
||||||
|
* The descriptor items:
|
||||||
|
* [ inode objectid, BTRFS_VERITY_DESC_ITEM_KEY, offset ]
|
||||||
|
*
|
||||||
|
* At offset 0, we store a btrfs_verity_descriptor_item which tracks the size
|
||||||
|
* of the descriptor item and some extra data for encryption.
|
||||||
|
* Starting at offset 1, these hold the generic fs verity descriptor. The
|
||||||
|
* latter are opaque to btrfs, we just read and write them as a blob for the
|
||||||
|
* higher level verity code. The most common descriptor size is 256 bytes.
|
||||||
|
*
|
||||||
|
* The merkle tree items:
|
||||||
|
* [ inode objectid, BTRFS_VERITY_MERKLE_ITEM_KEY, offset ]
|
||||||
|
*
|
||||||
|
* These also start at offset 0, and correspond to the merkle tree bytes. When
|
||||||
|
* fsverity asks for page 0 of the merkle tree, we pull up one page starting at
|
||||||
|
* offset 0 for this key type. These are also opaque to btrfs, we're blindly
|
||||||
|
* storing whatever fsverity sends down.
|
||||||
|
*/
|
||||||
|
#define BTRFS_VERITY_DESC_ITEM_KEY 36
|
||||||
|
#define BTRFS_VERITY_MERKLE_ITEM_KEY 37
|
||||||
|
|
||||||
#define BTRFS_ORPHAN_ITEM_KEY 48
|
#define BTRFS_ORPHAN_ITEM_KEY 48
|
||||||
/* reserve 2-15 close to the inode for later flexibility */
|
/* reserve 2-15 close to the inode for later flexibility */
|
||||||
|
|
||||||
@ -991,4 +1014,16 @@ struct btrfs_qgroup_limit_item {
|
|||||||
__le64 rsv_excl;
|
__le64 rsv_excl;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
|
struct btrfs_verity_descriptor_item {
|
||||||
|
/* Size of the verity descriptor in bytes */
|
||||||
|
__le64 size;
|
||||||
|
/*
|
||||||
|
* When we implement support for fscrypt, we will need to encrypt the
|
||||||
|
* Merkle tree for encrypted verity files. These 128 bits are for the
|
||||||
|
* eventual storage of an fscrypt initialization vector.
|
||||||
|
*/
|
||||||
|
__le64 reserved[2];
|
||||||
|
__u8 encryption;
|
||||||
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
#endif /* _BTRFS_CTREE_H_ */
|
#endif /* _BTRFS_CTREE_H_ */
|
||||||
|
|||||||
@ -101,6 +101,8 @@ struct can_ctrlmode {
|
|||||||
#define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
|
#define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
|
||||||
#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
|
#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
|
||||||
#define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */
|
#define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */
|
||||||
|
#define CAN_CTRLMODE_TDC_AUTO 0x200 /* CAN transiver automatically calculates TDCV */
|
||||||
|
#define CAN_CTRLMODE_TDC_MANUAL 0x400 /* TDCV is manually set up by user */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CAN device statistics
|
* CAN device statistics
|
||||||
@ -134,10 +136,35 @@ enum {
|
|||||||
IFLA_CAN_BITRATE_CONST,
|
IFLA_CAN_BITRATE_CONST,
|
||||||
IFLA_CAN_DATA_BITRATE_CONST,
|
IFLA_CAN_DATA_BITRATE_CONST,
|
||||||
IFLA_CAN_BITRATE_MAX,
|
IFLA_CAN_BITRATE_MAX,
|
||||||
__IFLA_CAN_MAX
|
IFLA_CAN_TDC,
|
||||||
|
|
||||||
|
/* add new constants above here */
|
||||||
|
__IFLA_CAN_MAX,
|
||||||
|
IFLA_CAN_MAX = __IFLA_CAN_MAX - 1
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
|
/*
|
||||||
|
* CAN FD Transmitter Delay Compensation (TDC)
|
||||||
|
*
|
||||||
|
* Please refer to struct can_tdc_const and can_tdc in
|
||||||
|
* include/linux/can/bittiming.h for further details.
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
IFLA_CAN_TDC_UNSPEC,
|
||||||
|
IFLA_CAN_TDC_TDCV_MIN, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCV_MAX, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCO_MIN, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCO_MAX, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCF_MIN, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCF_MAX, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCV, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCO, /* u32 */
|
||||||
|
IFLA_CAN_TDC_TDCF, /* u32 */
|
||||||
|
|
||||||
|
/* add new constants above here */
|
||||||
|
__IFLA_CAN_TDC,
|
||||||
|
IFLA_CAN_TDC_MAX = __IFLA_CAN_TDC - 1
|
||||||
|
};
|
||||||
|
|
||||||
/* u16 termination range: 1..65535 Ohms */
|
/* u16 termination range: 1..65535 Ohms */
|
||||||
#define CAN_TERMINATION_DISABLED 0
|
#define CAN_TERMINATION_DISABLED 0
|
||||||
|
|||||||
@ -479,16 +479,22 @@ enum {
|
|||||||
|
|
||||||
/* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */
|
/* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */
|
||||||
#define BRIDGE_VLANDB_DUMPF_STATS (1 << 0) /* Include stats in the dump */
|
#define BRIDGE_VLANDB_DUMPF_STATS (1 << 0) /* Include stats in the dump */
|
||||||
|
#define BRIDGE_VLANDB_DUMPF_GLOBAL (1 << 1) /* Dump global vlan options only */
|
||||||
|
|
||||||
/* Bridge vlan RTM attributes
|
/* Bridge vlan RTM attributes
|
||||||
* [BRIDGE_VLANDB_ENTRY] = {
|
* [BRIDGE_VLANDB_ENTRY] = {
|
||||||
* [BRIDGE_VLANDB_ENTRY_INFO]
|
* [BRIDGE_VLANDB_ENTRY_INFO]
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
|
* [BRIDGE_VLANDB_GLOBAL_OPTIONS] = {
|
||||||
|
* [BRIDGE_VLANDB_GOPTS_ID]
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
*/
|
*/
|
||||||
enum {
|
enum {
|
||||||
BRIDGE_VLANDB_UNSPEC,
|
BRIDGE_VLANDB_UNSPEC,
|
||||||
BRIDGE_VLANDB_ENTRY,
|
BRIDGE_VLANDB_ENTRY,
|
||||||
|
BRIDGE_VLANDB_GLOBAL_OPTIONS,
|
||||||
__BRIDGE_VLANDB_MAX,
|
__BRIDGE_VLANDB_MAX,
|
||||||
};
|
};
|
||||||
#define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1)
|
#define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1)
|
||||||
@ -500,6 +506,7 @@ enum {
|
|||||||
BRIDGE_VLANDB_ENTRY_STATE,
|
BRIDGE_VLANDB_ENTRY_STATE,
|
||||||
BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,
|
BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,
|
||||||
BRIDGE_VLANDB_ENTRY_STATS,
|
BRIDGE_VLANDB_ENTRY_STATS,
|
||||||
|
BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,
|
||||||
__BRIDGE_VLANDB_ENTRY_MAX,
|
__BRIDGE_VLANDB_ENTRY_MAX,
|
||||||
};
|
};
|
||||||
#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
|
#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
|
||||||
@ -538,6 +545,29 @@ enum {
|
|||||||
};
|
};
|
||||||
#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
|
#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BRIDGE_VLANDB_GOPTS_UNSPEC,
|
||||||
|
BRIDGE_VLANDB_GOPTS_ID,
|
||||||
|
BRIDGE_VLANDB_GOPTS_RANGE,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_PAD,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
|
||||||
|
BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
|
||||||
|
__BRIDGE_VLANDB_GOPTS_MAX
|
||||||
|
};
|
||||||
|
#define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
|
||||||
|
|
||||||
/* Bridge multicast database attributes
|
/* Bridge multicast database attributes
|
||||||
* [MDBA_MDB] = {
|
* [MDBA_MDB] = {
|
||||||
* [MDBA_MDB_ENTRY] = {
|
* [MDBA_MDB_ENTRY] = {
|
||||||
@ -629,6 +659,7 @@ enum {
|
|||||||
MDBA_ROUTER_PATTR_TYPE,
|
MDBA_ROUTER_PATTR_TYPE,
|
||||||
MDBA_ROUTER_PATTR_INET_TIMER,
|
MDBA_ROUTER_PATTR_INET_TIMER,
|
||||||
MDBA_ROUTER_PATTR_INET6_TIMER,
|
MDBA_ROUTER_PATTR_INET6_TIMER,
|
||||||
|
MDBA_ROUTER_PATTR_VID,
|
||||||
__MDBA_ROUTER_PATTR_MAX
|
__MDBA_ROUTER_PATTR_MAX
|
||||||
};
|
};
|
||||||
#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
|
#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
|
||||||
@ -720,12 +751,14 @@ struct br_mcast_stats {
|
|||||||
|
|
||||||
/* bridge boolean options
|
/* bridge boolean options
|
||||||
* BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets
|
* BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets
|
||||||
|
* BR_BOOLOPT_MCAST_VLAN_SNOOPING - control vlan multicast snooping
|
||||||
*
|
*
|
||||||
* IMPORTANT: if adding a new option do not forget to handle
|
* IMPORTANT: if adding a new option do not forget to handle
|
||||||
* it in br_boolopt_toggle/get and bridge sysfs
|
* it in br_boolopt_toggle/get and bridge sysfs
|
||||||
*/
|
*/
|
||||||
enum br_boolopt_id {
|
enum br_boolopt_id {
|
||||||
BR_BOOLOPT_NO_LL_LEARN,
|
BR_BOOLOPT_NO_LL_LEARN,
|
||||||
|
BR_BOOLOPT_MCAST_VLAN_SNOOPING,
|
||||||
BR_BOOLOPT_MAX
|
BR_BOOLOPT_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -738,4 +771,17 @@ struct br_boolopt_multi {
|
|||||||
__u32 optval;
|
__u32 optval;
|
||||||
__u32 optmask;
|
__u32 optmask;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BRIDGE_QUERIER_UNSPEC,
|
||||||
|
BRIDGE_QUERIER_IP_ADDRESS,
|
||||||
|
BRIDGE_QUERIER_IP_PORT,
|
||||||
|
BRIDGE_QUERIER_IP_OTHER_TIMER,
|
||||||
|
BRIDGE_QUERIER_PAD,
|
||||||
|
BRIDGE_QUERIER_IPV6_ADDRESS,
|
||||||
|
BRIDGE_QUERIER_IPV6_PORT,
|
||||||
|
BRIDGE_QUERIER_IPV6_OTHER_TIMER,
|
||||||
|
__BRIDGE_QUERIER_MAX
|
||||||
|
};
|
||||||
|
#define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1)
|
||||||
#endif /* _UAPI_LINUX_IF_BRIDGE_H */
|
#endif /* _UAPI_LINUX_IF_BRIDGE_H */
|
||||||
|
|||||||
@ -86,6 +86,7 @@
|
|||||||
* over Ethernet
|
* over Ethernet
|
||||||
*/
|
*/
|
||||||
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
||||||
|
#define ETH_P_REALTEK 0x8899 /* Multiple proprietary protocols */
|
||||||
#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
|
#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
|
||||||
#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
|
#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
|
||||||
#define ETH_P_802_EX1 0x88B5 /* 802.1 Local Experimental 1. */
|
#define ETH_P_802_EX1 0x88B5 /* 802.1 Local Experimental 1. */
|
||||||
@ -116,7 +117,7 @@
|
|||||||
#define ETH_P_IFE 0xED3E /* ForCES inter-FE LFB type */
|
#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_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
|
#define ETH_P_802_3_MIN 0x0600 /* If the value in the ethernet type is more than this value
|
||||||
* then the frame is Ethernet II. Else it is 802.3 */
|
* then the frame is Ethernet II. Else it is 802.3 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -151,6 +152,9 @@
|
|||||||
#define ETH_P_MAP 0x00F9 /* Qualcomm multiplexing and
|
#define ETH_P_MAP 0x00F9 /* Qualcomm multiplexing and
|
||||||
* aggregation protocol
|
* aggregation protocol
|
||||||
*/
|
*/
|
||||||
|
#define ETH_P_MCTP 0x00FA /* Management component transport
|
||||||
|
* protocol packets
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is an Ethernet frame header.
|
* This is an Ethernet frame header.
|
||||||
|
|||||||
@ -417,6 +417,7 @@ enum {
|
|||||||
IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */
|
IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */
|
||||||
IFLA_INET6_TOKEN, /* device token */
|
IFLA_INET6_TOKEN, /* device token */
|
||||||
IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
|
IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
|
||||||
|
IFLA_INET6_RA_MTU, /* mtu carried in the RA message */
|
||||||
__IFLA_INET6_MAX
|
__IFLA_INET6_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -479,6 +480,7 @@ enum {
|
|||||||
IFLA_BR_MCAST_MLD_VERSION,
|
IFLA_BR_MCAST_MLD_VERSION,
|
||||||
IFLA_BR_VLAN_STATS_PER_PORT,
|
IFLA_BR_VLAN_STATS_PER_PORT,
|
||||||
IFLA_BR_MULTI_BOOLOPT,
|
IFLA_BR_MULTI_BOOLOPT,
|
||||||
|
IFLA_BR_MCAST_QUERIER_STATE,
|
||||||
__IFLA_BR_MAX,
|
__IFLA_BR_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -855,6 +857,7 @@ enum {
|
|||||||
IFLA_BOND_AD_ACTOR_SYSTEM,
|
IFLA_BOND_AD_ACTOR_SYSTEM,
|
||||||
IFLA_BOND_TLB_DYNAMIC_LB,
|
IFLA_BOND_TLB_DYNAMIC_LB,
|
||||||
IFLA_BOND_PEER_NOTIF_DELAY,
|
IFLA_BOND_PEER_NOTIF_DELAY,
|
||||||
|
IFLA_BOND_AD_LACP_ACTIVE,
|
||||||
__IFLA_BOND_MAX,
|
__IFLA_BOND_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1260,4 +1263,14 @@ struct ifla_rmnet_flags {
|
|||||||
__u32 mask;
|
__u32 mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* MCTP section */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
IFLA_MCTP_UNSPEC,
|
||||||
|
IFLA_MCTP_NET,
|
||||||
|
__IFLA_MCTP_MAX,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
|
||||||
|
|
||||||
#endif /* _UAPI_LINUX_IF_LINK_H */
|
#endif /* _UAPI_LINUX_IF_LINK_H */
|
||||||
|
|||||||
@ -188,11 +188,22 @@ struct ip_mreq_source {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ip_msfilter {
|
struct ip_msfilter {
|
||||||
__be32 imsf_multiaddr;
|
union {
|
||||||
__be32 imsf_interface;
|
struct {
|
||||||
__u32 imsf_fmode;
|
__be32 imsf_multiaddr_aux;
|
||||||
__u32 imsf_numsrc;
|
__be32 imsf_interface_aux;
|
||||||
__be32 imsf_slist[1];
|
__u32 imsf_fmode_aux;
|
||||||
|
__u32 imsf_numsrc_aux;
|
||||||
|
__be32 imsf_slist[1];
|
||||||
|
};
|
||||||
|
struct {
|
||||||
|
__be32 imsf_multiaddr;
|
||||||
|
__be32 imsf_interface;
|
||||||
|
__u32 imsf_fmode;
|
||||||
|
__u32 imsf_numsrc;
|
||||||
|
__be32 imsf_slist_flex[];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IP_MSFILTER_SIZE(numsrc) \
|
#define IP_MSFILTER_SIZE(numsrc) \
|
||||||
@ -211,11 +222,22 @@ struct group_source_req {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct group_filter {
|
struct group_filter {
|
||||||
__u32 gf_interface; /* interface index */
|
union {
|
||||||
struct __kernel_sockaddr_storage gf_group; /* multicast address */
|
struct {
|
||||||
__u32 gf_fmode; /* filter mode */
|
__u32 gf_interface_aux; /* interface index */
|
||||||
__u32 gf_numsrc; /* number of sources */
|
struct __kernel_sockaddr_storage gf_group_aux; /* multicast address */
|
||||||
struct __kernel_sockaddr_storage gf_slist[1]; /* interface index */
|
__u32 gf_fmode_aux; /* filter mode */
|
||||||
|
__u32 gf_numsrc_aux; /* number of sources */
|
||||||
|
struct __kernel_sockaddr_storage gf_slist[1]; /* interface index */
|
||||||
|
};
|
||||||
|
struct {
|
||||||
|
__u32 gf_interface; /* interface index */
|
||||||
|
struct __kernel_sockaddr_storage gf_group; /* multicast address */
|
||||||
|
__u32 gf_fmode; /* filter mode */
|
||||||
|
__u32 gf_numsrc; /* number of sources */
|
||||||
|
struct __kernel_sockaddr_storage gf_slist_flex[]; /* interface index */
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GROUP_FILTER_SIZE(numsrc) \
|
#define GROUP_FILTER_SIZE(numsrc) \
|
||||||
|
|||||||
@ -145,6 +145,7 @@ struct in6_flowlabel_req {
|
|||||||
#define IPV6_TLV_PADN 1
|
#define IPV6_TLV_PADN 1
|
||||||
#define IPV6_TLV_ROUTERALERT 5
|
#define IPV6_TLV_ROUTERALERT 5
|
||||||
#define IPV6_TLV_CALIPSO 7 /* RFC 5570 */
|
#define IPV6_TLV_CALIPSO 7 /* RFC 5570 */
|
||||||
|
#define IPV6_TLV_IOAM 49 /* TEMPORARY IANA allocation for IOAM */
|
||||||
#define IPV6_TLV_JUMBO 194
|
#define IPV6_TLV_JUMBO 194
|
||||||
#define IPV6_TLV_HAO 201 /* home address option */
|
#define IPV6_TLV_HAO 201 /* home address option */
|
||||||
|
|
||||||
|
|||||||
@ -753,11 +753,13 @@ enum nft_dynset_attributes {
|
|||||||
* @NFT_PAYLOAD_LL_HEADER: link layer header
|
* @NFT_PAYLOAD_LL_HEADER: link layer header
|
||||||
* @NFT_PAYLOAD_NETWORK_HEADER: network header
|
* @NFT_PAYLOAD_NETWORK_HEADER: network header
|
||||||
* @NFT_PAYLOAD_TRANSPORT_HEADER: transport header
|
* @NFT_PAYLOAD_TRANSPORT_HEADER: transport header
|
||||||
|
* @NFT_PAYLOAD_INNER_HEADER: inner header / payload
|
||||||
*/
|
*/
|
||||||
enum nft_payload_bases {
|
enum nft_payload_bases {
|
||||||
NFT_PAYLOAD_LL_HEADER,
|
NFT_PAYLOAD_LL_HEADER,
|
||||||
NFT_PAYLOAD_NETWORK_HEADER,
|
NFT_PAYLOAD_NETWORK_HEADER,
|
||||||
NFT_PAYLOAD_TRANSPORT_HEADER,
|
NFT_PAYLOAD_TRANSPORT_HEADER,
|
||||||
|
NFT_PAYLOAD_INNER_HEADER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -896,7 +898,8 @@ enum nft_meta_keys {
|
|||||||
NFT_META_OIF,
|
NFT_META_OIF,
|
||||||
NFT_META_IIFNAME,
|
NFT_META_IIFNAME,
|
||||||
NFT_META_OIFNAME,
|
NFT_META_OIFNAME,
|
||||||
NFT_META_IIFTYPE,
|
NFT_META_IFTYPE,
|
||||||
|
#define NFT_META_IIFTYPE NFT_META_IFTYPE
|
||||||
NFT_META_OIFTYPE,
|
NFT_META_OIFTYPE,
|
||||||
NFT_META_SKUID,
|
NFT_META_SKUID,
|
||||||
NFT_META_SKGID,
|
NFT_META_SKGID,
|
||||||
@ -923,6 +926,7 @@ enum nft_meta_keys {
|
|||||||
NFT_META_TIME_HOUR,
|
NFT_META_TIME_HOUR,
|
||||||
NFT_META_SDIF,
|
NFT_META_SDIF,
|
||||||
NFT_META_SDIFNAME,
|
NFT_META_SDIFNAME,
|
||||||
|
__NFT_META_IIFTYPE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -300,6 +300,29 @@
|
|||||||
* the interface goes down.
|
* the interface goes down.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: FILS shared key crypto offload
|
||||||
|
*
|
||||||
|
* This feature is applicable to drivers running in AP mode.
|
||||||
|
*
|
||||||
|
* FILS shared key crypto offload can be advertised by drivers by setting
|
||||||
|
* @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD flag. The drivers that support
|
||||||
|
* FILS shared key crypto offload should be able to encrypt and decrypt
|
||||||
|
* association frames for FILS shared key authentication as per IEEE 802.11ai.
|
||||||
|
* With this capability, for FILS key derivation, drivers depend on userspace.
|
||||||
|
*
|
||||||
|
* After FILS key derivation, userspace shares the FILS AAD details with the
|
||||||
|
* driver and the driver stores the same to use in decryption of association
|
||||||
|
* request and in encryption of association response. The below parameters
|
||||||
|
* should be given to the driver in %NL80211_CMD_SET_FILS_AAD.
|
||||||
|
* %NL80211_ATTR_MAC - STA MAC address, used for storing FILS AAD per STA
|
||||||
|
* %NL80211_ATTR_FILS_KEK - Used for encryption or decryption
|
||||||
|
* %NL80211_ATTR_FILS_NONCES - Used for encryption or decryption
|
||||||
|
* (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
|
||||||
|
*
|
||||||
|
* Once the association is done, the driver cleans the FILS AAD data.
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum nl80211_commands - supported nl80211 commands
|
* enum nl80211_commands - supported nl80211 commands
|
||||||
*
|
*
|
||||||
@ -337,7 +360,10 @@
|
|||||||
* @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
|
* @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
|
||||||
* %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
|
* %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
|
||||||
* userspace to request deletion of a virtual interface, then requires
|
* userspace to request deletion of a virtual interface, then requires
|
||||||
* attribute %NL80211_ATTR_IFINDEX.
|
* attribute %NL80211_ATTR_IFINDEX. If multiple BSSID advertisements are
|
||||||
|
* enabled using %NL80211_ATTR_MBSSID_CONFIG, %NL80211_ATTR_MBSSID_ELEMS,
|
||||||
|
* and if this command is used for the transmitting interface, then all
|
||||||
|
* the non-transmitting interfaces are deleted as well.
|
||||||
*
|
*
|
||||||
* @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
|
* @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
|
||||||
* by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
|
* by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
|
||||||
@ -1200,6 +1226,12 @@
|
|||||||
* @NL80211_CMD_COLOR_CHANGE_COMPLETED: Notify userland that the color change
|
* @NL80211_CMD_COLOR_CHANGE_COMPLETED: Notify userland that the color change
|
||||||
* has completed
|
* has completed
|
||||||
*
|
*
|
||||||
|
* @NL80211_CMD_SET_FILS_AAD: Set FILS AAD data to the driver using -
|
||||||
|
* &NL80211_ATTR_MAC - for STA MAC address
|
||||||
|
* &NL80211_ATTR_FILS_KEK - for KEK
|
||||||
|
* &NL80211_ATTR_FILS_NONCES - for FILS Nonces
|
||||||
|
* (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
|
||||||
|
*
|
||||||
* @NL80211_CMD_MAX: highest used command number
|
* @NL80211_CMD_MAX: highest used command number
|
||||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||||
*/
|
*/
|
||||||
@ -1440,6 +1472,8 @@ enum nl80211_commands {
|
|||||||
NL80211_CMD_COLOR_CHANGE_ABORTED,
|
NL80211_CMD_COLOR_CHANGE_ABORTED,
|
||||||
NL80211_CMD_COLOR_CHANGE_COMPLETED,
|
NL80211_CMD_COLOR_CHANGE_COMPLETED,
|
||||||
|
|
||||||
|
NL80211_CMD_SET_FILS_AAD,
|
||||||
|
|
||||||
/* add new commands above here */
|
/* add new commands above here */
|
||||||
|
|
||||||
/* used to define NL80211_CMD_MAX below */
|
/* used to define NL80211_CMD_MAX below */
|
||||||
@ -2593,6 +2627,18 @@ enum nl80211_commands {
|
|||||||
* @NL80211_ATTR_COLOR_CHANGE_ELEMS: Nested set of attributes containing the IE
|
* @NL80211_ATTR_COLOR_CHANGE_ELEMS: Nested set of attributes containing the IE
|
||||||
* information for the time while performing a color switch.
|
* information for the time while performing a color switch.
|
||||||
*
|
*
|
||||||
|
* @NL80211_ATTR_MBSSID_CONFIG: Nested attribute for multiple BSSID
|
||||||
|
* advertisements (MBSSID) parameters in AP mode.
|
||||||
|
* Kernel uses this attribute to indicate the driver's support for MBSSID
|
||||||
|
* and enhanced multi-BSSID advertisements (EMA AP) to the userspace.
|
||||||
|
* Userspace should use this attribute to configure per interface MBSSID
|
||||||
|
* parameters.
|
||||||
|
* See &enum nl80211_mbssid_config_attributes for details.
|
||||||
|
*
|
||||||
|
* @NL80211_ATTR_MBSSID_ELEMS: Nested parameter to pass multiple BSSID elements.
|
||||||
|
* Mandatory parameter for the transmitting interface to enable MBSSID.
|
||||||
|
* Optional for the non-transmitting interfaces.
|
||||||
|
*
|
||||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||||
@ -3096,6 +3142,9 @@ enum nl80211_attrs {
|
|||||||
NL80211_ATTR_COLOR_CHANGE_COLOR,
|
NL80211_ATTR_COLOR_CHANGE_COLOR,
|
||||||
NL80211_ATTR_COLOR_CHANGE_ELEMS,
|
NL80211_ATTR_COLOR_CHANGE_ELEMS,
|
||||||
|
|
||||||
|
NL80211_ATTR_MBSSID_CONFIG,
|
||||||
|
NL80211_ATTR_MBSSID_ELEMS,
|
||||||
|
|
||||||
/* add attributes here, update the policy in nl80211.c */
|
/* add attributes here, update the policy in nl80211.c */
|
||||||
|
|
||||||
__NL80211_ATTR_AFTER_LAST,
|
__NL80211_ATTR_AFTER_LAST,
|
||||||
@ -4929,6 +4978,7 @@ enum nl80211_txrate_gi {
|
|||||||
* @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
|
* @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
|
||||||
* @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
|
* @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
|
||||||
* @NL80211_BAND_S1GHZ: around 900MHz, supported by S1G PHYs
|
* @NL80211_BAND_S1GHZ: around 900MHz, supported by S1G PHYs
|
||||||
|
* @NL80211_BAND_LC: light communication band (placeholder)
|
||||||
* @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
|
* @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
|
||||||
* since newer kernel versions may support more bands
|
* since newer kernel versions may support more bands
|
||||||
*/
|
*/
|
||||||
@ -4938,6 +4988,7 @@ enum nl80211_band {
|
|||||||
NL80211_BAND_60GHZ,
|
NL80211_BAND_60GHZ,
|
||||||
NL80211_BAND_6GHZ,
|
NL80211_BAND_6GHZ,
|
||||||
NL80211_BAND_S1GHZ,
|
NL80211_BAND_S1GHZ,
|
||||||
|
NL80211_BAND_LC,
|
||||||
|
|
||||||
NUM_NL80211_BANDS,
|
NUM_NL80211_BANDS,
|
||||||
};
|
};
|
||||||
@ -5995,6 +6046,11 @@ enum nl80211_feature_flags {
|
|||||||
* @NL80211_EXT_FEATURE_BSS_COLOR: The driver supports BSS color collision
|
* @NL80211_EXT_FEATURE_BSS_COLOR: The driver supports BSS color collision
|
||||||
* detection and change announcemnts.
|
* detection and change announcemnts.
|
||||||
*
|
*
|
||||||
|
* @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD: Driver running in AP mode supports
|
||||||
|
* FILS encryption and decryption for (Re)Association Request and Response
|
||||||
|
* frames. Userspace has to share FILS AAD details to the driver by using
|
||||||
|
* @NL80211_CMD_SET_FILS_AAD.
|
||||||
|
*
|
||||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||||
*/
|
*/
|
||||||
@ -6060,6 +6116,7 @@ enum nl80211_ext_feature_index {
|
|||||||
NL80211_EXT_FEATURE_SECURE_RTT,
|
NL80211_EXT_FEATURE_SECURE_RTT,
|
||||||
NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
|
NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
|
||||||
NL80211_EXT_FEATURE_BSS_COLOR,
|
NL80211_EXT_FEATURE_BSS_COLOR,
|
||||||
|
NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
|
||||||
|
|
||||||
/* add new features before the definition below */
|
/* add new features before the definition below */
|
||||||
NUM_NL80211_EXT_FEATURES,
|
NUM_NL80211_EXT_FEATURES,
|
||||||
@ -7349,4 +7406,60 @@ enum nl80211_sar_specs_attrs {
|
|||||||
NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
|
NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum nl80211_mbssid_config_attributes - multiple BSSID (MBSSID) and enhanced
|
||||||
|
* multi-BSSID advertisements (EMA) in AP mode.
|
||||||
|
* Kernel uses some of these attributes to advertise driver's support for
|
||||||
|
* MBSSID and EMA.
|
||||||
|
* Remaining attributes should be used by the userspace to configure the
|
||||||
|
* features.
|
||||||
|
*
|
||||||
|
* @__NL80211_MBSSID_CONFIG_ATTR_INVALID: Invalid
|
||||||
|
*
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES: Used by the kernel to advertise
|
||||||
|
* the maximum number of MBSSID interfaces supported by the driver.
|
||||||
|
* Driver should indicate MBSSID support by setting
|
||||||
|
* wiphy->mbssid_max_interfaces to a value more than or equal to 2.
|
||||||
|
*
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY: Used by the kernel
|
||||||
|
* to advertise the maximum profile periodicity supported by the driver
|
||||||
|
* if EMA is enabled. Driver should indicate EMA support to the userspace
|
||||||
|
* by setting wiphy->ema_max_profile_periodicity to
|
||||||
|
* a non-zero value.
|
||||||
|
*
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_INDEX: Mandatory parameter to pass the index of
|
||||||
|
* this BSS (u8) in the multiple BSSID set.
|
||||||
|
* Value must be set to 0 for the transmitting interface and non-zero for
|
||||||
|
* all non-transmitting interfaces. The userspace will be responsible
|
||||||
|
* for using unique indices for the interfaces.
|
||||||
|
* Range: 0 to wiphy->mbssid_max_interfaces-1.
|
||||||
|
*
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX: Mandatory parameter for
|
||||||
|
* a non-transmitted profile which provides the interface index (u32) of
|
||||||
|
* the transmitted profile. The value must match one of the interface
|
||||||
|
* indices advertised by the kernel. Optional if the interface being set up
|
||||||
|
* is the transmitting one, however, if provided then the value must match
|
||||||
|
* the interface index of the same.
|
||||||
|
*
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_EMA: Flag used to enable EMA AP feature.
|
||||||
|
* Setting this flag is permitted only if the driver advertises EMA support
|
||||||
|
* by setting wiphy->ema_max_profile_periodicity to non-zero.
|
||||||
|
*
|
||||||
|
* @__NL80211_MBSSID_CONFIG_ATTR_LAST: Internal
|
||||||
|
* @NL80211_MBSSID_CONFIG_ATTR_MAX: highest attribute
|
||||||
|
*/
|
||||||
|
enum nl80211_mbssid_config_attributes {
|
||||||
|
__NL80211_MBSSID_CONFIG_ATTR_INVALID,
|
||||||
|
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES,
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY,
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_INDEX,
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX,
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_EMA,
|
||||||
|
|
||||||
|
/* keep last */
|
||||||
|
__NL80211_MBSSID_CONFIG_ATTR_LAST,
|
||||||
|
NL80211_MBSSID_CONFIG_ATTR_MAX = __NL80211_MBSSID_CONFIG_ATTR_LAST - 1,
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* __LINUX_NL80211_H */
|
#endif /* __LINUX_NL80211_H */
|
||||||
|
|||||||
@ -827,6 +827,8 @@ struct tc_codel_xstats {
|
|||||||
|
|
||||||
/* FQ_CODEL */
|
/* FQ_CODEL */
|
||||||
|
|
||||||
|
#define FQ_CODEL_QUANTUM_MAX (1 << 20)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TCA_FQ_CODEL_UNSPEC,
|
TCA_FQ_CODEL_UNSPEC,
|
||||||
TCA_FQ_CODEL_TARGET,
|
TCA_FQ_CODEL_TARGET,
|
||||||
@ -838,6 +840,8 @@ enum {
|
|||||||
TCA_FQ_CODEL_CE_THRESHOLD,
|
TCA_FQ_CODEL_CE_THRESHOLD,
|
||||||
TCA_FQ_CODEL_DROP_BATCH_SIZE,
|
TCA_FQ_CODEL_DROP_BATCH_SIZE,
|
||||||
TCA_FQ_CODEL_MEMORY_LIMIT,
|
TCA_FQ_CODEL_MEMORY_LIMIT,
|
||||||
|
TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
|
||||||
|
TCA_FQ_CODEL_CE_THRESHOLD_MASK,
|
||||||
__TCA_FQ_CODEL_MAX
|
__TCA_FQ_CODEL_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -22,9 +22,24 @@ static const char* const df_table[_NETDEV_VXLAN_DF_MAX] = {
|
|||||||
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(df, VxLanDF, NETDEV_VXLAN_DF_YES);
|
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(df, VxLanDF, NETDEV_VXLAN_DF_YES);
|
||||||
DEFINE_CONFIG_PARSE_ENUM(config_parse_df, df, VxLanDF, "Failed to parse VXLAN IPDoNotFragment= setting");
|
DEFINE_CONFIG_PARSE_ENUM(config_parse_df, df, VxLanDF, "Failed to parse VXLAN IPDoNotFragment= setting");
|
||||||
|
|
||||||
|
static int vxlan_get_local_address(VxLan *v, Link *link, int *ret_family, union in_addr_union *ret_address) {
|
||||||
|
assert(v);
|
||||||
|
|
||||||
|
if (v->local_type < 0) {
|
||||||
|
if (ret_family)
|
||||||
|
*ret_family = v->local_family;
|
||||||
|
if (ret_address)
|
||||||
|
*ret_address = v->local;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return link_get_local_address(link, v->local_type, v->local_family, ret_family, ret_address);
|
||||||
|
}
|
||||||
|
|
||||||
static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netlink_message *m) {
|
static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netlink_message *m) {
|
||||||
|
union in_addr_union local;
|
||||||
|
int local_family, r;
|
||||||
VxLan *v;
|
VxLan *v;
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(netdev);
|
assert(netdev);
|
||||||
assert(m);
|
assert(m);
|
||||||
@ -55,11 +70,15 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netli
|
|||||||
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GROUP attribute: %m");
|
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GROUP attribute: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_addr_is_set(v->local_family, &v->local)) {
|
r = vxlan_get_local_address(v, link, &local_family, &local);
|
||||||
if (v->local_family == AF_INET)
|
if (r < 0)
|
||||||
r = sd_netlink_message_append_in_addr(m, IFLA_VXLAN_LOCAL, &v->local.in);
|
return log_netdev_error_errno(netdev, r, "Could not find local address: %m");
|
||||||
|
|
||||||
|
if (in_addr_is_set(local_family, &local)) {
|
||||||
|
if (local_family == AF_INET)
|
||||||
|
r = sd_netlink_message_append_in_addr(m, IFLA_VXLAN_LOCAL, &local.in);
|
||||||
else
|
else
|
||||||
r = sd_netlink_message_append_in6_addr(m, IFLA_VXLAN_LOCAL6, &v->local.in6);
|
r = sd_netlink_message_append_in6_addr(m, IFLA_VXLAN_LOCAL6, &local.in6);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LOCAL attribute: %m");
|
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LOCAL attribute: %m");
|
||||||
}
|
}
|
||||||
@ -190,16 +209,45 @@ int config_parse_vxlan_address(
|
|||||||
|
|
||||||
VxLan *v = userdata;
|
VxLan *v = userdata;
|
||||||
union in_addr_union *addr = data, buffer;
|
union in_addr_union *addr = data, buffer;
|
||||||
int r, f;
|
int *family, f, r;
|
||||||
|
|
||||||
assert(filename);
|
assert(filename);
|
||||||
assert(lvalue);
|
assert(lvalue);
|
||||||
assert(rvalue);
|
assert(rvalue);
|
||||||
assert(data);
|
assert(data);
|
||||||
|
assert(userdata);
|
||||||
|
|
||||||
|
if (streq(lvalue, "Local"))
|
||||||
|
family = &v->local_family;
|
||||||
|
else if (streq(lvalue, "Remote"))
|
||||||
|
family = &v->remote_family;
|
||||||
|
else if (streq(lvalue, "Group"))
|
||||||
|
family = &v->group_family;
|
||||||
|
else
|
||||||
|
assert_not_reached();
|
||||||
|
|
||||||
|
if (isempty(rvalue)) {
|
||||||
|
*addr = IN_ADDR_NULL;
|
||||||
|
*family = AF_UNSPEC;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (streq(lvalue, "Local")) {
|
||||||
|
NetDevLocalAddressType t;
|
||||||
|
|
||||||
|
t = netdev_local_address_type_from_string(rvalue);
|
||||||
|
if (t >= 0) {
|
||||||
|
v->local = IN_ADDR_NULL;
|
||||||
|
v->local_family = AF_UNSPEC;
|
||||||
|
v->local_type = t;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
r = in_addr_from_string_auto(rvalue, &f, &buffer);
|
r = in_addr_from_string_auto(rvalue, &f, &buffer);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, r, "vxlan '%s' address is invalid, ignoring assignment: %s", lvalue, rvalue);
|
log_syntax(unit, LOG_WARNING, filename, line, r,
|
||||||
|
"Failed to parse %s=, ignoring assignment: %s", lvalue, rvalue);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,24 +255,22 @@ int config_parse_vxlan_address(
|
|||||||
|
|
||||||
if (streq(lvalue, "Group")) {
|
if (streq(lvalue, "Group")) {
|
||||||
if (r <= 0) {
|
if (r <= 0) {
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, 0, "vxlan %s invalid multicast address, ignoring assignment: %s", lvalue, rvalue);
|
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||||
|
"%s= must be a multicast address, ignoring assignment: %s", lvalue, rvalue);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
v->group_family = f;
|
|
||||||
} else {
|
} else {
|
||||||
if (r > 0) {
|
if (r > 0) {
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, 0, "vxlan %s cannot be a multicast address, ignoring assignment: %s", lvalue, rvalue);
|
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||||
|
"%s= cannot be a multicast address, ignoring assignment: %s", lvalue, rvalue);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (streq(lvalue, "Remote"))
|
|
||||||
v->remote_family = f;
|
|
||||||
else
|
|
||||||
v->local_family = f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (streq(lvalue, "Local"))
|
||||||
|
v->local_type = _NETDEV_LOCAL_ADDRESS_TYPE_INVALID;
|
||||||
*addr = buffer;
|
*addr = buffer;
|
||||||
|
*family = f;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -369,9 +415,27 @@ static int netdev_vxlan_verify(NetDev *netdev, const char *filename) {
|
|||||||
"%s: VXLAN both 'Group=' and 'Remote=' cannot be specified. Ignoring.",
|
"%s: VXLAN both 'Group=' and 'Remote=' cannot be specified. Ignoring.",
|
||||||
filename);
|
filename);
|
||||||
|
|
||||||
|
if (v->independent && v->local_type >= 0)
|
||||||
|
return log_netdev_error_errno(netdev, SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"The local address cannot be '%s' when Independent= is enabled, ignoring.",
|
||||||
|
strna(netdev_local_address_type_to_string(v->local_type)));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int netdev_vxlan_is_ready_to_create(NetDev *netdev, Link *link) {
|
||||||
|
VxLan *v;
|
||||||
|
|
||||||
|
assert(netdev);
|
||||||
|
assert(link);
|
||||||
|
|
||||||
|
v = VXLAN(netdev);
|
||||||
|
|
||||||
|
assert(v);
|
||||||
|
|
||||||
|
return vxlan_get_local_address(v, link, NULL, NULL) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void vxlan_init(NetDev *netdev) {
|
static void vxlan_init(NetDev *netdev) {
|
||||||
VxLan *v;
|
VxLan *v;
|
||||||
|
|
||||||
@ -381,6 +445,7 @@ static void vxlan_init(NetDev *netdev) {
|
|||||||
|
|
||||||
assert(v);
|
assert(v);
|
||||||
|
|
||||||
|
v->local_type = _NETDEV_LOCAL_ADDRESS_TYPE_INVALID;
|
||||||
v->vni = VXLAN_VID_MAX + 1;
|
v->vni = VXLAN_VID_MAX + 1;
|
||||||
v->df = _NETDEV_VXLAN_DF_INVALID;
|
v->df = _NETDEV_VXLAN_DF_INVALID;
|
||||||
v->learning = true;
|
v->learning = true;
|
||||||
@ -395,6 +460,7 @@ const NetDevVTable vxlan_vtable = {
|
|||||||
.sections = NETDEV_COMMON_SECTIONS "VXLAN\0",
|
.sections = NETDEV_COMMON_SECTIONS "VXLAN\0",
|
||||||
.fill_message_create = netdev_vxlan_fill_message_create,
|
.fill_message_create = netdev_vxlan_fill_message_create,
|
||||||
.create_type = NETDEV_CREATE_STACKED,
|
.create_type = NETDEV_CREATE_STACKED,
|
||||||
|
.is_ready_to_create = netdev_vxlan_is_ready_to_create,
|
||||||
.config_verify = netdev_vxlan_verify,
|
.config_verify = netdev_vxlan_verify,
|
||||||
.iftype = ARPHRD_ETHER,
|
.iftype = ARPHRD_ETHER,
|
||||||
.generate_mac = true,
|
.generate_mac = true,
|
||||||
|
|||||||
@ -6,6 +6,7 @@ typedef struct VxLan VxLan;
|
|||||||
#include <linux/if_link.h>
|
#include <linux/if_link.h>
|
||||||
|
|
||||||
#include "in-addr-util.h"
|
#include "in-addr-util.h"
|
||||||
|
#include "netdev-util.h"
|
||||||
#include "netdev.h"
|
#include "netdev.h"
|
||||||
|
|
||||||
#define VXLAN_VID_MAX (1u << 24) - 1
|
#define VXLAN_VID_MAX (1u << 24) - 1
|
||||||
@ -30,8 +31,9 @@ struct VxLan {
|
|||||||
|
|
||||||
VxLanDF df;
|
VxLanDF df;
|
||||||
|
|
||||||
union in_addr_union remote;
|
NetDevLocalAddressType local_type;
|
||||||
union in_addr_union local;
|
union in_addr_union local;
|
||||||
|
union in_addr_union remote;
|
||||||
union in_addr_union group;
|
union in_addr_union group;
|
||||||
|
|
||||||
unsigned tos;
|
unsigned tos;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -134,15 +134,31 @@ struct bpf_insn;
|
|||||||
.off = OFF, \
|
.off = OFF, \
|
||||||
.imm = 0 })
|
.imm = 0 })
|
||||||
|
|
||||||
/* Atomic memory add, *(uint *)(dst_reg + off16) += src_reg */
|
/*
|
||||||
|
* Atomic operations:
|
||||||
|
*
|
||||||
|
* BPF_ADD *(uint *) (dst_reg + off16) += src_reg
|
||||||
|
* BPF_AND *(uint *) (dst_reg + off16) &= src_reg
|
||||||
|
* BPF_OR *(uint *) (dst_reg + off16) |= src_reg
|
||||||
|
* BPF_XOR *(uint *) (dst_reg + off16) ^= src_reg
|
||||||
|
* BPF_ADD | BPF_FETCH src_reg = atomic_fetch_add(dst_reg + off16, src_reg);
|
||||||
|
* BPF_AND | BPF_FETCH src_reg = atomic_fetch_and(dst_reg + off16, src_reg);
|
||||||
|
* BPF_OR | BPF_FETCH src_reg = atomic_fetch_or(dst_reg + off16, src_reg);
|
||||||
|
* BPF_XOR | BPF_FETCH src_reg = atomic_fetch_xor(dst_reg + off16, src_reg);
|
||||||
|
* BPF_XCHG src_reg = atomic_xchg(dst_reg + off16, src_reg)
|
||||||
|
* BPF_CMPXCHG r0 = atomic_cmpxchg(dst_reg + off16, r0, src_reg)
|
||||||
|
*/
|
||||||
|
|
||||||
#define BPF_STX_XADD(SIZE, DST, SRC, OFF) \
|
#define BPF_ATOMIC_OP(SIZE, OP, DST, SRC, OFF) \
|
||||||
((struct bpf_insn) { \
|
((struct bpf_insn) { \
|
||||||
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_XADD, \
|
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_ATOMIC, \
|
||||||
.dst_reg = DST, \
|
.dst_reg = DST, \
|
||||||
.src_reg = SRC, \
|
.src_reg = SRC, \
|
||||||
.off = OFF, \
|
.off = OFF, \
|
||||||
.imm = 0 })
|
.imm = OP })
|
||||||
|
|
||||||
|
/* Legacy alias */
|
||||||
|
#define BPF_STX_XADD(SIZE, DST, SRC, OFF) BPF_ATOMIC_OP(SIZE, BPF_ADD, DST, SRC, OFF)
|
||||||
|
|
||||||
/* Memory store, *(uint *) (dst_reg + off16) = imm32 */
|
/* Memory store, *(uint *) (dst_reg + off16) = imm32 */
|
||||||
|
|
||||||
|
|||||||
@ -193,8 +193,22 @@ struct dm_name_list {
|
|||||||
__u32 next; /* offset to the next record from
|
__u32 next; /* offset to the next record from
|
||||||
the _start_ of this */
|
the _start_ of this */
|
||||||
char name[0];
|
char name[0];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following members can be accessed by taking a pointer that
|
||||||
|
* points immediately after the terminating zero character in "name"
|
||||||
|
* and aligning this pointer to next 8-byte boundary.
|
||||||
|
* Uuid is present if the flag DM_NAME_LIST_FLAG_HAS_UUID is set.
|
||||||
|
*
|
||||||
|
* __u32 event_nr;
|
||||||
|
* __u32 flags;
|
||||||
|
* char uuid[0];
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define DM_NAME_LIST_FLAG_HAS_UUID 1
|
||||||
|
#define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Used to retrieve the target versions
|
* Used to retrieve the target versions
|
||||||
*/
|
*/
|
||||||
@ -274,7 +288,7 @@ enum {
|
|||||||
#define DM_VERSION_MAJOR 4
|
#define DM_VERSION_MAJOR 4
|
||||||
#define DM_VERSION_MINOR 27
|
#define DM_VERSION_MINOR 27
|
||||||
#define DM_VERSION_PATCHLEVEL 0
|
#define DM_VERSION_PATCHLEVEL 0
|
||||||
#define DM_VERSION_EXTRA "-ioctl (2020-10-01)"
|
#define DM_VERSION_EXTRA "-ioctl (2021-03-22)"
|
||||||
|
|
||||||
/* Status bits */
|
/* Status bits */
|
||||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
||||||
@ -362,4 +376,10 @@ enum {
|
|||||||
*/
|
*/
|
||||||
#define DM_INTERNAL_SUSPEND_FLAG (1 << 18) /* Out */
|
#define DM_INTERNAL_SUSPEND_FLAG (1 << 18) /* Out */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If set, returns in the in buffer passed by UM, the raw table information
|
||||||
|
* that would be measured by IMA subsystem on device state change.
|
||||||
|
*/
|
||||||
|
#define DM_IMA_MEASUREMENT_FLAG (1 << 19) /* In */
|
||||||
|
|
||||||
#endif /* _LINUX_DM_IOCTL_H */
|
#endif /* _LINUX_DM_IOCTL_H */
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
#ifndef _UAPI_LINUX_ETHTOOL_H
|
#ifndef _UAPI_LINUX_ETHTOOL_H
|
||||||
#define _UAPI_LINUX_ETHTOOL_H
|
#define _UAPI_LINUX_ETHTOOL_H
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/const.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
|
|
||||||
@ -30,6 +30,14 @@
|
|||||||
* have the same layout for 32-bit and 64-bit userland.
|
* have the same layout for 32-bit and 64-bit userland.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Note on reserved space.
|
||||||
|
* Reserved fields must not be accessed directly by user space because
|
||||||
|
* they may be replaced by a different field in the future. They must
|
||||||
|
* be initialized to zero before making the request, e.g. via memset
|
||||||
|
* of the entire structure or implicitly by not being set in a structure
|
||||||
|
* initializer.
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ethtool_cmd - DEPRECATED, link control and status
|
* struct ethtool_cmd - DEPRECATED, link control and status
|
||||||
* This structure is DEPRECATED, please use struct ethtool_link_settings.
|
* This structure is DEPRECATED, please use struct ethtool_link_settings.
|
||||||
@ -71,6 +79,7 @@
|
|||||||
* and other link features that the link partner advertised
|
* and other link features that the link partner advertised
|
||||||
* through autonegotiation; 0 if unknown or not applicable.
|
* through autonegotiation; 0 if unknown or not applicable.
|
||||||
* Read-only.
|
* Read-only.
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
*
|
*
|
||||||
* The link speed in Mbps is split between @speed and @speed_hi. Use
|
* The link speed in Mbps is split between @speed and @speed_hi. Use
|
||||||
* the ethtool_cmd_speed() and ethtool_cmd_speed_set() functions to
|
* the ethtool_cmd_speed() and ethtool_cmd_speed_set() functions to
|
||||||
@ -159,6 +168,7 @@ static inline __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep)
|
|||||||
* @bus_info: Device bus address. This should match the dev_name()
|
* @bus_info: Device bus address. This should match the dev_name()
|
||||||
* string for the underlying bus device, if there is one. May be
|
* string for the underlying bus device, if there is one. May be
|
||||||
* an empty string.
|
* an empty string.
|
||||||
|
* @reserved2: Reserved for future use; see the note on reserved space.
|
||||||
* @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and
|
* @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and
|
||||||
* %ETHTOOL_SPFLAGS commands; also the number of strings in the
|
* %ETHTOOL_SPFLAGS commands; also the number of strings in the
|
||||||
* %ETH_SS_PRIV_FLAGS set
|
* %ETH_SS_PRIV_FLAGS set
|
||||||
@ -227,7 +237,7 @@ enum tunable_id {
|
|||||||
ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
|
ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
|
||||||
/*
|
/*
|
||||||
* Add your fresh new tunable attribute above and remember to update
|
* Add your fresh new tunable attribute above and remember to update
|
||||||
* tunable_strings[] in net/core/ethtool.c
|
* tunable_strings[] in net/ethtool/common.c
|
||||||
*/
|
*/
|
||||||
__ETHTOOL_TUNABLE_COUNT,
|
__ETHTOOL_TUNABLE_COUNT,
|
||||||
};
|
};
|
||||||
@ -291,7 +301,7 @@ enum phy_tunable_id {
|
|||||||
ETHTOOL_PHY_EDPD,
|
ETHTOOL_PHY_EDPD,
|
||||||
/*
|
/*
|
||||||
* Add your fresh new phy tunable attribute above and remember to update
|
* Add your fresh new phy tunable attribute above and remember to update
|
||||||
* phy_tunable_strings[] in net/core/ethtool.c
|
* phy_tunable_strings[] in net/ethtool/common.c
|
||||||
*/
|
*/
|
||||||
__ETHTOOL_PHY_TUNABLE_COUNT,
|
__ETHTOOL_PHY_TUNABLE_COUNT,
|
||||||
};
|
};
|
||||||
@ -360,6 +370,7 @@ struct ethtool_eeprom {
|
|||||||
* @tx_lpi_timer: Time in microseconds the interface delays prior to asserting
|
* @tx_lpi_timer: Time in microseconds the interface delays prior to asserting
|
||||||
* its tx lpi (after reaching 'idle' state). Effective only when eee
|
* its tx lpi (after reaching 'idle' state). Effective only when eee
|
||||||
* was negotiated and tx_lpi_enabled was set.
|
* was negotiated and tx_lpi_enabled was set.
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
*/
|
*/
|
||||||
struct ethtool_eee {
|
struct ethtool_eee {
|
||||||
__u32 cmd;
|
__u32 cmd;
|
||||||
@ -378,6 +389,7 @@ struct ethtool_eee {
|
|||||||
* @cmd: %ETHTOOL_GMODULEINFO
|
* @cmd: %ETHTOOL_GMODULEINFO
|
||||||
* @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx
|
* @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx
|
||||||
* @eeprom_len: Length of the eeprom
|
* @eeprom_len: Length of the eeprom
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
*
|
*
|
||||||
* This structure is used to return the information to
|
* This structure is used to return the information to
|
||||||
* properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM.
|
* properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM.
|
||||||
@ -583,9 +595,7 @@ struct ethtool_pauseparam {
|
|||||||
__u32 tx_pause;
|
__u32 tx_pause;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* Link extended state */
|
||||||
* enum ethtool_link_ext_state - link extended state
|
|
||||||
*/
|
|
||||||
enum ethtool_link_ext_state {
|
enum ethtool_link_ext_state {
|
||||||
ETHTOOL_LINK_EXT_STATE_AUTONEG,
|
ETHTOOL_LINK_EXT_STATE_AUTONEG,
|
||||||
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE,
|
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE,
|
||||||
@ -597,12 +607,10 @@ enum ethtool_link_ext_state {
|
|||||||
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE,
|
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE,
|
||||||
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
|
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
|
||||||
ETHTOOL_LINK_EXT_STATE_OVERHEAT,
|
ETHTOOL_LINK_EXT_STATE_OVERHEAT,
|
||||||
|
ETHTOOL_LINK_EXT_STATE_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */
|
||||||
* enum ethtool_link_ext_substate_autoneg - more information in addition to
|
|
||||||
* ETHTOOL_LINK_EXT_STATE_AUTONEG.
|
|
||||||
*/
|
|
||||||
enum ethtool_link_ext_substate_autoneg {
|
enum ethtool_link_ext_substate_autoneg {
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1,
|
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1,
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED,
|
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED,
|
||||||
@ -612,9 +620,7 @@ enum ethtool_link_ext_substate_autoneg {
|
|||||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD,
|
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE.
|
||||||
* enum ethtool_link_ext_substate_link_training - more information in addition to
|
|
||||||
* ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE.
|
|
||||||
*/
|
*/
|
||||||
enum ethtool_link_ext_substate_link_training {
|
enum ethtool_link_ext_substate_link_training {
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1,
|
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1,
|
||||||
@ -623,9 +629,7 @@ enum ethtool_link_ext_substate_link_training {
|
|||||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT,
|
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH.
|
||||||
* enum ethtool_link_ext_substate_logical_mismatch - more information in addition
|
|
||||||
* to ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH.
|
|
||||||
*/
|
*/
|
||||||
enum ethtool_link_ext_substate_link_logical_mismatch {
|
enum ethtool_link_ext_substate_link_logical_mismatch {
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1,
|
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1,
|
||||||
@ -635,24 +639,26 @@ enum ethtool_link_ext_substate_link_logical_mismatch {
|
|||||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED,
|
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY.
|
||||||
* enum ethtool_link_ext_substate_bad_signal_integrity - more information in
|
|
||||||
* addition to ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY.
|
|
||||||
*/
|
*/
|
||||||
enum ethtool_link_ext_substate_bad_signal_integrity {
|
enum ethtool_link_ext_substate_bad_signal_integrity {
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1,
|
ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1,
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE,
|
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE,
|
||||||
|
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST,
|
||||||
|
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE. */
|
||||||
* enum ethtool_link_ext_substate_cable_issue - more information in
|
|
||||||
* addition to ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE.
|
|
||||||
*/
|
|
||||||
enum ethtool_link_ext_substate_cable_issue {
|
enum ethtool_link_ext_substate_cable_issue {
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1,
|
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1,
|
||||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE,
|
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* More information in addition to ETHTOOL_LINK_EXT_STATE_MODULE. */
|
||||||
|
enum ethtool_link_ext_substate_module {
|
||||||
|
ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define ETH_GSTRING_LEN 32
|
#define ETH_GSTRING_LEN 32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -665,6 +671,7 @@ enum ethtool_link_ext_substate_cable_issue {
|
|||||||
* now deprecated
|
* now deprecated
|
||||||
* @ETH_SS_FEATURES: Device feature names
|
* @ETH_SS_FEATURES: Device feature names
|
||||||
* @ETH_SS_RSS_HASH_FUNCS: RSS hush function names
|
* @ETH_SS_RSS_HASH_FUNCS: RSS hush function names
|
||||||
|
* @ETH_SS_TUNABLES: tunable names
|
||||||
* @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS
|
* @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS
|
||||||
* @ETH_SS_PHY_TUNABLES: PHY tunable names
|
* @ETH_SS_PHY_TUNABLES: PHY tunable names
|
||||||
* @ETH_SS_LINK_MODES: link mode names
|
* @ETH_SS_LINK_MODES: link mode names
|
||||||
@ -674,6 +681,13 @@ enum ethtool_link_ext_substate_cable_issue {
|
|||||||
* @ETH_SS_TS_TX_TYPES: timestamping Tx types
|
* @ETH_SS_TS_TX_TYPES: timestamping Tx types
|
||||||
* @ETH_SS_TS_RX_FILTERS: timestamping Rx filters
|
* @ETH_SS_TS_RX_FILTERS: timestamping Rx filters
|
||||||
* @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types
|
* @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types
|
||||||
|
* @ETH_SS_STATS_STD: standardized stats
|
||||||
|
* @ETH_SS_STATS_ETH_PHY: names of IEEE 802.3 PHY statistics
|
||||||
|
* @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics
|
||||||
|
* @ETH_SS_STATS_ETH_CTRL: names of IEEE 802.3 MAC Control statistics
|
||||||
|
* @ETH_SS_STATS_RMON: names of RMON statistics
|
||||||
|
*
|
||||||
|
* @ETH_SS_COUNT: number of defined string sets
|
||||||
*/
|
*/
|
||||||
enum ethtool_stringset {
|
enum ethtool_stringset {
|
||||||
ETH_SS_TEST = 0,
|
ETH_SS_TEST = 0,
|
||||||
@ -692,11 +706,39 @@ enum ethtool_stringset {
|
|||||||
ETH_SS_TS_TX_TYPES,
|
ETH_SS_TS_TX_TYPES,
|
||||||
ETH_SS_TS_RX_FILTERS,
|
ETH_SS_TS_RX_FILTERS,
|
||||||
ETH_SS_UDP_TUNNEL_TYPES,
|
ETH_SS_UDP_TUNNEL_TYPES,
|
||||||
|
ETH_SS_STATS_STD,
|
||||||
|
ETH_SS_STATS_ETH_PHY,
|
||||||
|
ETH_SS_STATS_ETH_MAC,
|
||||||
|
ETH_SS_STATS_ETH_CTRL,
|
||||||
|
ETH_SS_STATS_RMON,
|
||||||
|
|
||||||
/* add new constants above here */
|
/* add new constants above here */
|
||||||
ETH_SS_COUNT
|
ETH_SS_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum ethtool_module_power_mode_policy - plug-in module power mode policy
|
||||||
|
* @ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH: Module is always in high power mode.
|
||||||
|
* @ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO: Module is transitioned by the host
|
||||||
|
* to high power mode when the first port using it is put administratively
|
||||||
|
* up and to low power mode when the last port using it is put
|
||||||
|
* administratively down.
|
||||||
|
*/
|
||||||
|
enum ethtool_module_power_mode_policy {
|
||||||
|
ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1,
|
||||||
|
ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum ethtool_module_power_mode - plug-in module power mode
|
||||||
|
* @ETHTOOL_MODULE_POWER_MODE_LOW: Module is in low power mode.
|
||||||
|
* @ETHTOOL_MODULE_POWER_MODE_HIGH: Module is in high power mode.
|
||||||
|
*/
|
||||||
|
enum ethtool_module_power_mode {
|
||||||
|
ETHTOOL_MODULE_POWER_MODE_LOW = 1,
|
||||||
|
ETHTOOL_MODULE_POWER_MODE_HIGH,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ethtool_gstrings - string set for data tagging
|
* struct ethtool_gstrings - string set for data tagging
|
||||||
* @cmd: Command number = %ETHTOOL_GSTRINGS
|
* @cmd: Command number = %ETHTOOL_GSTRINGS
|
||||||
@ -719,6 +761,7 @@ struct ethtool_gstrings {
|
|||||||
/**
|
/**
|
||||||
* struct ethtool_sset_info - string set information
|
* struct ethtool_sset_info - string set information
|
||||||
* @cmd: Command number = %ETHTOOL_GSSET_INFO
|
* @cmd: Command number = %ETHTOOL_GSSET_INFO
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
* @sset_mask: On entry, a bitmask of string sets to query, with bits
|
* @sset_mask: On entry, a bitmask of string sets to query, with bits
|
||||||
* numbered according to &enum ethtool_stringset. On return, a
|
* numbered according to &enum ethtool_stringset. On return, a
|
||||||
* bitmask of those string sets queried that are supported.
|
* bitmask of those string sets queried that are supported.
|
||||||
@ -763,6 +806,7 @@ enum ethtool_test_flags {
|
|||||||
* @flags: A bitmask of flags from &enum ethtool_test_flags. Some
|
* @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
|
* flags may be set by the user on entry; others may be set by
|
||||||
* the driver on return.
|
* the driver on return.
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
* @len: On return, the number of test results
|
* @len: On return, the number of test results
|
||||||
* @data: Array of test results
|
* @data: Array of test results
|
||||||
*
|
*
|
||||||
@ -963,6 +1007,7 @@ union ethtool_flow_union {
|
|||||||
* @vlan_etype: VLAN EtherType
|
* @vlan_etype: VLAN EtherType
|
||||||
* @vlan_tci: VLAN tag control information
|
* @vlan_tci: VLAN tag control information
|
||||||
* @data: user defined data
|
* @data: user defined data
|
||||||
|
* @padding: Reserved for future use; see the note on reserved space.
|
||||||
*
|
*
|
||||||
* Note, @vlan_etype, @vlan_tci, and @data are only valid if %FLOW_EXT
|
* Note, @vlan_etype, @vlan_tci, and @data are only valid if %FLOW_EXT
|
||||||
* is set in &struct ethtool_rx_flow_spec @flow_type.
|
* is set in &struct ethtool_rx_flow_spec @flow_type.
|
||||||
@ -1138,7 +1183,8 @@ struct ethtool_rxfh_indir {
|
|||||||
* hardware hash key.
|
* hardware hash key.
|
||||||
* @hfunc: Defines the current RSS hash function used by HW (or to be set to).
|
* @hfunc: Defines the current RSS hash function used by HW (or to be set to).
|
||||||
* Valid values are one of the %ETH_RSS_HASH_*.
|
* Valid values are one of the %ETH_RSS_HASH_*.
|
||||||
* @rsvd: Reserved for future extensions.
|
* @rsvd8: Reserved for future use; see the note on reserved space.
|
||||||
|
* @rsvd32: Reserved for future use; see the note on reserved space.
|
||||||
* @rss_config: RX ring/queue index for each hash value i.e., indirection table
|
* @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
|
* of @indir_size __u32 elements, followed by hash key of @key_size
|
||||||
* bytes.
|
* bytes.
|
||||||
@ -1306,7 +1352,9 @@ struct ethtool_sfeatures {
|
|||||||
* @so_timestamping: bit mask of the sum of the supported SO_TIMESTAMPING flags
|
* @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
|
* @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
|
* @tx_types: bit mask of the supported hwtstamp_tx_types enumeration values
|
||||||
|
* @tx_reserved: Reserved for future use; see the note on reserved space.
|
||||||
* @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values
|
* @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values
|
||||||
|
* @rx_reserved: Reserved for future use; see the note on reserved space.
|
||||||
*
|
*
|
||||||
* The bits in the 'tx_types' and 'rx_filters' fields correspond to
|
* The bits in the 'tx_types' and 'rx_filters' fields correspond to
|
||||||
* the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values,
|
* the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values,
|
||||||
@ -1380,15 +1428,33 @@ struct ethtool_per_queue_op {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ethtool_fecparam - Ethernet forward error correction(fec) parameters
|
* struct ethtool_fecparam - Ethernet Forward Error Correction parameters
|
||||||
* @cmd: Command number = %ETHTOOL_GFECPARAM or %ETHTOOL_SFECPARAM
|
* @cmd: Command number = %ETHTOOL_GFECPARAM or %ETHTOOL_SFECPARAM
|
||||||
* @active_fec: FEC mode which is active on porte
|
* @active_fec: FEC mode which is active on the port, single bit set, GET only.
|
||||||
* @fec: Bitmask of supported/configured FEC modes
|
* @fec: Bitmask of configured FEC modes.
|
||||||
* @rsvd: Reserved for future extensions. i.e FEC bypass feature.
|
* @reserved: Reserved for future extensions, ignore on GET, write 0 for SET.
|
||||||
*
|
*
|
||||||
* Drivers should reject a non-zero setting of @autoneg when
|
* Note that @reserved was never validated on input and ethtool user space
|
||||||
* autoneogotiation is disabled (or not supported) for the link.
|
* left it uninitialized when calling SET. Hence going forward it can only be
|
||||||
|
* used to return a value to userspace with GET.
|
||||||
*
|
*
|
||||||
|
* FEC modes supported by the device can be read via %ETHTOOL_GLINKSETTINGS.
|
||||||
|
* FEC settings are configured by link autonegotiation whenever it's enabled.
|
||||||
|
* With autoneg on %ETHTOOL_GFECPARAM can be used to read the current mode.
|
||||||
|
*
|
||||||
|
* When autoneg is disabled %ETHTOOL_SFECPARAM controls the FEC settings.
|
||||||
|
* It is recommended that drivers only accept a single bit set in @fec.
|
||||||
|
* When multiple bits are set in @fec drivers may pick mode in an implementation
|
||||||
|
* dependent way. Drivers should reject mixing %ETHTOOL_FEC_AUTO_BIT with other
|
||||||
|
* FEC modes, because it's unclear whether in this case other modes constrain
|
||||||
|
* AUTO or are independent choices.
|
||||||
|
* Drivers must reject SET requests if they support none of the requested modes.
|
||||||
|
*
|
||||||
|
* If device does not support FEC drivers may use %ETHTOOL_FEC_NONE instead
|
||||||
|
* of returning %EOPNOTSUPP from %ETHTOOL_GFECPARAM.
|
||||||
|
*
|
||||||
|
* See enum ethtool_fec_config_bits for definition of valid bits for both
|
||||||
|
* @fec and @active_fec.
|
||||||
*/
|
*/
|
||||||
struct ethtool_fecparam {
|
struct ethtool_fecparam {
|
||||||
__u32 cmd;
|
__u32 cmd;
|
||||||
@ -1400,11 +1466,16 @@ struct ethtool_fecparam {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* enum ethtool_fec_config_bits - flags definition of ethtool_fec_configuration
|
* enum ethtool_fec_config_bits - flags definition of ethtool_fec_configuration
|
||||||
* @ETHTOOL_FEC_NONE: FEC mode configuration is not supported
|
* @ETHTOOL_FEC_NONE_BIT: FEC mode configuration is not supported. Should not
|
||||||
* @ETHTOOL_FEC_AUTO: Default/Best FEC mode provided by driver
|
* be used together with other bits. GET only.
|
||||||
* @ETHTOOL_FEC_OFF: No FEC Mode
|
* @ETHTOOL_FEC_AUTO_BIT: Select default/best FEC mode automatically, usually
|
||||||
* @ETHTOOL_FEC_RS: Reed-Solomon Forward Error Detection mode
|
* based link mode and SFP parameters read from module's
|
||||||
* @ETHTOOL_FEC_BASER: Base-R/Reed-Solomon Forward Error Detection mode
|
* EEPROM. This bit does _not_ mean autonegotiation.
|
||||||
|
* @ETHTOOL_FEC_OFF_BIT: No FEC Mode
|
||||||
|
* @ETHTOOL_FEC_RS_BIT: Reed-Solomon FEC Mode
|
||||||
|
* @ETHTOOL_FEC_BASER_BIT: Base-R/Reed-Solomon FEC Mode
|
||||||
|
* @ETHTOOL_FEC_LLRS_BIT: Low Latency Reed Solomon FEC Mode (25G/50G Ethernet
|
||||||
|
* Consortium)
|
||||||
*/
|
*/
|
||||||
enum ethtool_fec_config_bits {
|
enum ethtool_fec_config_bits {
|
||||||
ETHTOOL_FEC_NONE_BIT,
|
ETHTOOL_FEC_NONE_BIT,
|
||||||
@ -1962,6 +2033,11 @@ enum ethtool_reset_flags {
|
|||||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||||
* @transceiver: Used to distinguish different possible PHY types,
|
* @transceiver: Used to distinguish different possible PHY types,
|
||||||
* reported consistently by PHYLIB. Read-only.
|
* reported consistently by PHYLIB. Read-only.
|
||||||
|
* @master_slave_cfg: Master/slave port mode.
|
||||||
|
* @master_slave_state: Master/slave port state.
|
||||||
|
* @reserved: Reserved for future use; see the note on reserved space.
|
||||||
|
* @reserved1: Reserved for future use; see the note on reserved space.
|
||||||
|
* @link_mode_masks: Variable length bitmaps.
|
||||||
*
|
*
|
||||||
* If autonegotiation is disabled, the speed and @duplex represent the
|
* If autonegotiation is disabled, the speed and @duplex represent the
|
||||||
* fixed link mode and are writable if the driver supports multiple
|
* fixed link mode and are writable if the driver supports multiple
|
||||||
|
|||||||
8
test/test-network/conf/25-vxlan-local-slaac.netdev
Normal file
8
test/test-network/conf/25-vxlan-local-slaac.netdev
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
[NetDev]
|
||||||
|
Name=vxlan-slaac
|
||||||
|
Kind=vxlan
|
||||||
|
|
||||||
|
[VXLAN]
|
||||||
|
VNI=4831584
|
||||||
|
Local=slaac
|
||||||
7
test/test-network/conf/25-vxlan-local-slaac.network
Normal file
7
test/test-network/conf/25-vxlan-local-slaac.network
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
[Match]
|
||||||
|
Name=vxlan-slaac
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
IPv6AcceptRA=no
|
||||||
|
LinkLocalAddressing=yes
|
||||||
10
test/test-network/conf/25-vxlan-veth99.network
Normal file
10
test/test-network/conf/25-vxlan-veth99.network
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
[Match]
|
||||||
|
Name=veth99
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
IPv6AcceptRA=yes
|
||||||
|
VXLAN=vxlan-slaac
|
||||||
|
|
||||||
|
[IPv6AcceptRA]
|
||||||
|
PrefixAllowList=2002:da8:1::/64
|
||||||
@ -934,6 +934,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||||||
'vtitun98',
|
'vtitun98',
|
||||||
'vtitun99',
|
'vtitun99',
|
||||||
'vxcan99',
|
'vxcan99',
|
||||||
|
'vxlan-slaac',
|
||||||
'vxlan97',
|
'vxlan97',
|
||||||
'vxlan98',
|
'vxlan98',
|
||||||
'vxlan99',
|
'vxlan99',
|
||||||
@ -1029,6 +1030,9 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||||||
'25-vxcan.netdev',
|
'25-vxcan.netdev',
|
||||||
'25-vxlan-independent.netdev',
|
'25-vxlan-independent.netdev',
|
||||||
'25-vxlan-ipv6.netdev',
|
'25-vxlan-ipv6.netdev',
|
||||||
|
'25-vxlan-local-slaac.netdev',
|
||||||
|
'25-vxlan-local-slaac.network',
|
||||||
|
'25-vxlan-veth99.network',
|
||||||
'25-vxlan.netdev',
|
'25-vxlan.netdev',
|
||||||
'25-wireguard-23-peers.netdev',
|
'25-wireguard-23-peers.netdev',
|
||||||
'25-wireguard-23-peers.network',
|
'25-wireguard-23-peers.network',
|
||||||
@ -1825,13 +1829,16 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||||||
self.assertRegex(output, 'encap fou encap-sport auto encap-dport 55556')
|
self.assertRegex(output, 'encap fou encap-sport auto encap-dport 55556')
|
||||||
|
|
||||||
def test_vxlan(self):
|
def test_vxlan(self):
|
||||||
copy_unit_to_networkd_unit_path('25-vxlan.netdev', 'vxlan.network',
|
copy_unit_to_networkd_unit_path('11-dummy.netdev', 'vxlan-test1.network',
|
||||||
|
'25-vxlan.netdev', 'vxlan.network',
|
||||||
'25-vxlan-ipv6.netdev', 'vxlan-ipv6.network',
|
'25-vxlan-ipv6.netdev', 'vxlan-ipv6.network',
|
||||||
'25-vxlan-independent.netdev', 'netdev-link-local-addressing-yes.network',
|
'25-vxlan-independent.netdev', 'netdev-link-local-addressing-yes.network',
|
||||||
'11-dummy.netdev', 'vxlan-test1.network')
|
'25-veth.netdev', '25-vxlan-veth99.network', 'ipv6-prefix.network',
|
||||||
|
'25-vxlan-local-slaac.netdev', '25-vxlan-local-slaac.network')
|
||||||
start_networkd()
|
start_networkd()
|
||||||
|
|
||||||
self.wait_online(['test1:degraded', 'vxlan99:degraded', 'vxlan98:degraded', 'vxlan97:degraded'])
|
self.wait_online(['test1:degraded', 'veth99:routable', 'veth-peer:degraded',
|
||||||
|
'vxlan99:degraded', 'vxlan98:degraded', 'vxlan97:degraded', 'vxlan-slaac:degraded'])
|
||||||
|
|
||||||
output = check_output('ip -d link show vxlan99')
|
output = check_output('ip -d link show vxlan99')
|
||||||
print(output)
|
print(output)
|
||||||
@ -1864,6 +1871,14 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
|
|||||||
self.assertIn('00:00:00:00:00:00 dst fe80::27c:16ff:fec0:6c74 via test1 self permanent', output)
|
self.assertIn('00:00:00:00:00:00 dst fe80::27c:16ff:fec0:6c74 via test1 self permanent', output)
|
||||||
self.assertIn('00:00:00:00:00:00 dst fe80::2a2:e4ff:fef9:2269 via test1 self permanent', output)
|
self.assertIn('00:00:00:00:00:00 dst fe80::2a2:e4ff:fef9:2269 via test1 self permanent', output)
|
||||||
|
|
||||||
|
output = check_output('ip -d link show vxlan-slaac')
|
||||||
|
print(output)
|
||||||
|
self.assertIn('vxlan id 4831584 local 2002:da8:1:0:1034:56ff:fe78:9abc dev veth99', output)
|
||||||
|
|
||||||
|
output = check_output('ip -6 address show veth99')
|
||||||
|
print(output)
|
||||||
|
self.assertIn('inet6 2002:da8:1:0:1034:56ff:fe78:9abc/64 scope global dynamic', output)
|
||||||
|
|
||||||
def test_macsec(self):
|
def test_macsec(self):
|
||||||
copy_unit_to_networkd_unit_path('25-macsec.netdev', '25-macsec.network', '25-macsec.key',
|
copy_unit_to_networkd_unit_path('25-macsec.netdev', '25-macsec.network', '25-macsec.key',
|
||||||
'macsec.network', '12-dummy.netdev')
|
'macsec.network', '12-dummy.netdev')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user