brintos

brintos / linux-shallow public Read only

0
0
Text · 20.2 KiB · a5b743a Raw
859 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */2/*3 *	Linux ethernet bridge4 *5 *	Authors:6 *	Lennert Buytenhek		<buytenh@gnu.org>7 *8 *	This program is free software; you can redistribute it and/or9 *	modify it under the terms of the GNU General Public License10 *	as published by the Free Software Foundation; either version11 *	2 of the License, or (at your option) any later version.12 */13 14#ifndef _UAPI_LINUX_IF_BRIDGE_H15#define _UAPI_LINUX_IF_BRIDGE_H16 17#include <linux/types.h>18#include <linux/if_ether.h>19#include <linux/in6.h>20 21#define SYSFS_BRIDGE_ATTR	"bridge"22#define SYSFS_BRIDGE_FDB	"brforward"23#define SYSFS_BRIDGE_PORT_SUBDIR "brif"24#define SYSFS_BRIDGE_PORT_ATTR	"brport"25#define SYSFS_BRIDGE_PORT_LINK	"bridge"26 27#define BRCTL_VERSION 128 29#define BRCTL_GET_VERSION 030#define BRCTL_GET_BRIDGES 131#define BRCTL_ADD_BRIDGE 232#define BRCTL_DEL_BRIDGE 333#define BRCTL_ADD_IF 434#define BRCTL_DEL_IF 535#define BRCTL_GET_BRIDGE_INFO 636#define BRCTL_GET_PORT_LIST 737#define BRCTL_SET_BRIDGE_FORWARD_DELAY 838#define BRCTL_SET_BRIDGE_HELLO_TIME 939#define BRCTL_SET_BRIDGE_MAX_AGE 1040#define BRCTL_SET_AGEING_TIME 1141#define BRCTL_SET_GC_INTERVAL 1242#define BRCTL_GET_PORT_INFO 1343#define BRCTL_SET_BRIDGE_STP_STATE 1444#define BRCTL_SET_BRIDGE_PRIORITY 1545#define BRCTL_SET_PORT_PRIORITY 1646#define BRCTL_SET_PATH_COST 1747#define BRCTL_GET_FDB_ENTRIES 1848 49#define BR_STATE_DISABLED 050#define BR_STATE_LISTENING 151#define BR_STATE_LEARNING 252#define BR_STATE_FORWARDING 353#define BR_STATE_BLOCKING 454 55struct __bridge_info {56	__u64 designated_root;57	__u64 bridge_id;58	__u32 root_path_cost;59	__u32 max_age;60	__u32 hello_time;61	__u32 forward_delay;62	__u32 bridge_max_age;63	__u32 bridge_hello_time;64	__u32 bridge_forward_delay;65	__u8 topology_change;66	__u8 topology_change_detected;67	__u8 root_port;68	__u8 stp_enabled;69	__u32 ageing_time;70	__u32 gc_interval;71	__u32 hello_timer_value;72	__u32 tcn_timer_value;73	__u32 topology_change_timer_value;74	__u32 gc_timer_value;75};76 77struct __port_info {78	__u64 designated_root;79	__u64 designated_bridge;80	__u16 port_id;81	__u16 designated_port;82	__u32 path_cost;83	__u32 designated_cost;84	__u8 state;85	__u8 top_change_ack;86	__u8 config_pending;87	__u8 unused0;88	__u32 message_age_timer_value;89	__u32 forward_delay_timer_value;90	__u32 hold_timer_value;91};92 93struct __fdb_entry {94	__u8 mac_addr[ETH_ALEN];95	__u8 port_no;96	__u8 is_local;97	__u32 ageing_timer_value;98	__u8 port_hi;99	__u8 pad0;100	__u16 unused;101};102 103/* Bridge Flags */104#define BRIDGE_FLAGS_MASTER	1	/* Bridge command to/from master */105#define BRIDGE_FLAGS_SELF	2	/* Bridge command to/from lowerdev */106 107#define BRIDGE_MODE_VEB		0	/* Default loopback mode */108#define BRIDGE_MODE_VEPA	1	/* 802.1Qbg defined VEPA mode */109#define BRIDGE_MODE_UNDEF	0xFFFF  /* mode undefined */110 111/* Bridge management nested attributes112 * [IFLA_AF_SPEC] = {113 *     [IFLA_BRIDGE_FLAGS]114 *     [IFLA_BRIDGE_MODE]115 *     [IFLA_BRIDGE_VLAN_INFO]116 * }117 */118enum {119	IFLA_BRIDGE_FLAGS,120	IFLA_BRIDGE_MODE,121	IFLA_BRIDGE_VLAN_INFO,122	IFLA_BRIDGE_VLAN_TUNNEL_INFO,123	IFLA_BRIDGE_MRP,124	IFLA_BRIDGE_CFM,125	IFLA_BRIDGE_MST,126	__IFLA_BRIDGE_MAX,127};128#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)129 130#define BRIDGE_VLAN_INFO_MASTER	(1<<0)	/* Operate on Bridge device as well */131#define BRIDGE_VLAN_INFO_PVID	(1<<1)	/* VLAN is PVID, ingress untagged */132#define BRIDGE_VLAN_INFO_UNTAGGED	(1<<2)	/* VLAN egresses untagged */133#define BRIDGE_VLAN_INFO_RANGE_BEGIN	(1<<3) /* VLAN is start of vlan range */134#define BRIDGE_VLAN_INFO_RANGE_END	(1<<4) /* VLAN is end of vlan range */135#define BRIDGE_VLAN_INFO_BRENTRY	(1<<5) /* Global bridge VLAN entry */136#define BRIDGE_VLAN_INFO_ONLY_OPTS	(1<<6) /* Skip create/delete/flags */137 138struct bridge_vlan_info {139	__u16 flags;140	__u16 vid;141};142 143enum {144	IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,145	IFLA_BRIDGE_VLAN_TUNNEL_ID,146	IFLA_BRIDGE_VLAN_TUNNEL_VID,147	IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,148	__IFLA_BRIDGE_VLAN_TUNNEL_MAX,149};150 151#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)152 153struct bridge_vlan_xstats {154	__u64 rx_bytes;155	__u64 rx_packets;156	__u64 tx_bytes;157	__u64 tx_packets;158	__u16 vid;159	__u16 flags;160	__u32 pad2;161};162 163enum {164	IFLA_BRIDGE_MRP_UNSPEC,165	IFLA_BRIDGE_MRP_INSTANCE,166	IFLA_BRIDGE_MRP_PORT_STATE,167	IFLA_BRIDGE_MRP_PORT_ROLE,168	IFLA_BRIDGE_MRP_RING_STATE,169	IFLA_BRIDGE_MRP_RING_ROLE,170	IFLA_BRIDGE_MRP_START_TEST,171	IFLA_BRIDGE_MRP_INFO,172	IFLA_BRIDGE_MRP_IN_ROLE,173	IFLA_BRIDGE_MRP_IN_STATE,174	IFLA_BRIDGE_MRP_START_IN_TEST,175	__IFLA_BRIDGE_MRP_MAX,176};177 178#define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1)179 180enum {181	IFLA_BRIDGE_MRP_INSTANCE_UNSPEC,182	IFLA_BRIDGE_MRP_INSTANCE_RING_ID,183	IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX,184	IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX,185	IFLA_BRIDGE_MRP_INSTANCE_PRIO,186	__IFLA_BRIDGE_MRP_INSTANCE_MAX,187};188 189#define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1)190 191enum {192	IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC,193	IFLA_BRIDGE_MRP_PORT_STATE_STATE,194	__IFLA_BRIDGE_MRP_PORT_STATE_MAX,195};196 197#define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1)198 199enum {200	IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC,201	IFLA_BRIDGE_MRP_PORT_ROLE_ROLE,202	__IFLA_BRIDGE_MRP_PORT_ROLE_MAX,203};204 205#define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1)206 207enum {208	IFLA_BRIDGE_MRP_RING_STATE_UNSPEC,209	IFLA_BRIDGE_MRP_RING_STATE_RING_ID,210	IFLA_BRIDGE_MRP_RING_STATE_STATE,211	__IFLA_BRIDGE_MRP_RING_STATE_MAX,212};213 214#define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1)215 216enum {217	IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC,218	IFLA_BRIDGE_MRP_RING_ROLE_RING_ID,219	IFLA_BRIDGE_MRP_RING_ROLE_ROLE,220	__IFLA_BRIDGE_MRP_RING_ROLE_MAX,221};222 223#define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1)224 225enum {226	IFLA_BRIDGE_MRP_START_TEST_UNSPEC,227	IFLA_BRIDGE_MRP_START_TEST_RING_ID,228	IFLA_BRIDGE_MRP_START_TEST_INTERVAL,229	IFLA_BRIDGE_MRP_START_TEST_MAX_MISS,230	IFLA_BRIDGE_MRP_START_TEST_PERIOD,231	IFLA_BRIDGE_MRP_START_TEST_MONITOR,232	__IFLA_BRIDGE_MRP_START_TEST_MAX,233};234 235#define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1)236 237enum {238	IFLA_BRIDGE_MRP_INFO_UNSPEC,239	IFLA_BRIDGE_MRP_INFO_RING_ID,240	IFLA_BRIDGE_MRP_INFO_P_IFINDEX,241	IFLA_BRIDGE_MRP_INFO_S_IFINDEX,242	IFLA_BRIDGE_MRP_INFO_PRIO,243	IFLA_BRIDGE_MRP_INFO_RING_STATE,244	IFLA_BRIDGE_MRP_INFO_RING_ROLE,245	IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL,246	IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS,247	IFLA_BRIDGE_MRP_INFO_TEST_MONITOR,248	IFLA_BRIDGE_MRP_INFO_I_IFINDEX,249	IFLA_BRIDGE_MRP_INFO_IN_STATE,250	IFLA_BRIDGE_MRP_INFO_IN_ROLE,251	IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL,252	IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS,253	__IFLA_BRIDGE_MRP_INFO_MAX,254};255 256#define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1)257 258enum {259	IFLA_BRIDGE_MRP_IN_STATE_UNSPEC,260	IFLA_BRIDGE_MRP_IN_STATE_IN_ID,261	IFLA_BRIDGE_MRP_IN_STATE_STATE,262	__IFLA_BRIDGE_MRP_IN_STATE_MAX,263};264 265#define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1)266 267enum {268	IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC,269	IFLA_BRIDGE_MRP_IN_ROLE_RING_ID,270	IFLA_BRIDGE_MRP_IN_ROLE_IN_ID,271	IFLA_BRIDGE_MRP_IN_ROLE_ROLE,272	IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX,273	__IFLA_BRIDGE_MRP_IN_ROLE_MAX,274};275 276#define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1)277 278enum {279	IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC,280	IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID,281	IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL,282	IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS,283	IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD,284	__IFLA_BRIDGE_MRP_START_IN_TEST_MAX,285};286 287#define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1)288 289struct br_mrp_instance {290	__u32 ring_id;291	__u32 p_ifindex;292	__u32 s_ifindex;293	__u16 prio;294};295 296struct br_mrp_ring_state {297	__u32 ring_id;298	__u32 ring_state;299};300 301struct br_mrp_ring_role {302	__u32 ring_id;303	__u32 ring_role;304};305 306struct br_mrp_start_test {307	__u32 ring_id;308	__u32 interval;309	__u32 max_miss;310	__u32 period;311	__u32 monitor;312};313 314struct br_mrp_in_state {315	__u32 in_state;316	__u16 in_id;317};318 319struct br_mrp_in_role {320	__u32 ring_id;321	__u32 in_role;322	__u32 i_ifindex;323	__u16 in_id;324};325 326struct br_mrp_start_in_test {327	__u32 interval;328	__u32 max_miss;329	__u32 period;330	__u16 in_id;331};332 333enum {334	IFLA_BRIDGE_CFM_UNSPEC,335	IFLA_BRIDGE_CFM_MEP_CREATE,336	IFLA_BRIDGE_CFM_MEP_DELETE,337	IFLA_BRIDGE_CFM_MEP_CONFIG,338	IFLA_BRIDGE_CFM_CC_CONFIG,339	IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD,340	IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE,341	IFLA_BRIDGE_CFM_CC_RDI,342	IFLA_BRIDGE_CFM_CC_CCM_TX,343	IFLA_BRIDGE_CFM_MEP_CREATE_INFO,344	IFLA_BRIDGE_CFM_MEP_CONFIG_INFO,345	IFLA_BRIDGE_CFM_CC_CONFIG_INFO,346	IFLA_BRIDGE_CFM_CC_RDI_INFO,347	IFLA_BRIDGE_CFM_CC_CCM_TX_INFO,348	IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO,349	IFLA_BRIDGE_CFM_MEP_STATUS_INFO,350	IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO,351	__IFLA_BRIDGE_CFM_MAX,352};353 354#define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1)355 356enum {357	IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC,358	IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE,359	IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN,360	IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION,361	IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX,362	__IFLA_BRIDGE_CFM_MEP_CREATE_MAX,363};364 365#define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1)366 367enum {368	IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC,369	IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE,370	__IFLA_BRIDGE_CFM_MEP_DELETE_MAX,371};372 373#define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1)374 375enum {376	IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC,377	IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE,378	IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC,379	IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL,380	IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID,381	__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX,382};383 384#define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1)385 386enum {387	IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC,388	IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE,389	IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE,390	IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL,391	IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID,392	__IFLA_BRIDGE_CFM_CC_CONFIG_MAX,393};394 395#define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1)396 397enum {398	IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC,399	IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE,400	IFLA_BRIDGE_CFM_CC_PEER_MEPID,401	__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX,402};403 404#define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1)405 406enum {407	IFLA_BRIDGE_CFM_CC_RDI_UNSPEC,408	IFLA_BRIDGE_CFM_CC_RDI_INSTANCE,409	IFLA_BRIDGE_CFM_CC_RDI_RDI,410	__IFLA_BRIDGE_CFM_CC_RDI_MAX,411};412 413#define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1)414 415enum {416	IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC,417	IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE,418	IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC,419	IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,420	IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,421	IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,422	IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,423	IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,424	IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,425	__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX,426};427 428#define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1)429 430enum {431	IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC,432	IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE,433	IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN,434	IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN,435	IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN,436	__IFLA_BRIDGE_CFM_MEP_STATUS_MAX,437};438 439#define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1)440 441enum {442	IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC,443	IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE,444	IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID,445	IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT,446	IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI,447	IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE,448	IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE,449	IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN,450	IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN,451	IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN,452	__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,453};454 455#define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)456 457enum {458	IFLA_BRIDGE_MST_UNSPEC,459	IFLA_BRIDGE_MST_ENTRY,460	__IFLA_BRIDGE_MST_MAX,461};462#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)463 464enum {465	IFLA_BRIDGE_MST_ENTRY_UNSPEC,466	IFLA_BRIDGE_MST_ENTRY_MSTI,467	IFLA_BRIDGE_MST_ENTRY_STATE,468	__IFLA_BRIDGE_MST_ENTRY_MAX,469};470#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)471 472struct bridge_stp_xstats {473	__u64 transition_blk;474	__u64 transition_fwd;475	__u64 rx_bpdu;476	__u64 tx_bpdu;477	__u64 rx_tcn;478	__u64 tx_tcn;479};480 481/* Bridge vlan RTM header */482struct br_vlan_msg {483	__u8 family;484	__u8 reserved1;485	__u16 reserved2;486	__u32 ifindex;487};488 489enum {490	BRIDGE_VLANDB_DUMP_UNSPEC,491	BRIDGE_VLANDB_DUMP_FLAGS,492	__BRIDGE_VLANDB_DUMP_MAX,493};494#define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1)495 496/* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */497#define BRIDGE_VLANDB_DUMPF_STATS	(1 << 0) /* Include stats in the dump */498#define BRIDGE_VLANDB_DUMPF_GLOBAL	(1 << 1) /* Dump global vlan options only */499 500/* Bridge vlan RTM attributes501 * [BRIDGE_VLANDB_ENTRY] = {502 *     [BRIDGE_VLANDB_ENTRY_INFO]503 *     ...504 * }505 * [BRIDGE_VLANDB_GLOBAL_OPTIONS] = {506 *     [BRIDGE_VLANDB_GOPTS_ID]507 *     ...508 * }509 */510enum {511	BRIDGE_VLANDB_UNSPEC,512	BRIDGE_VLANDB_ENTRY,513	BRIDGE_VLANDB_GLOBAL_OPTIONS,514	__BRIDGE_VLANDB_MAX,515};516#define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1)517 518enum {519	BRIDGE_VLANDB_ENTRY_UNSPEC,520	BRIDGE_VLANDB_ENTRY_INFO,521	BRIDGE_VLANDB_ENTRY_RANGE,522	BRIDGE_VLANDB_ENTRY_STATE,523	BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,524	BRIDGE_VLANDB_ENTRY_STATS,525	BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,526	BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS,527	BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS,528	BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS,529	__BRIDGE_VLANDB_ENTRY_MAX,530};531#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)532 533/* [BRIDGE_VLANDB_ENTRY] = {534 *     [BRIDGE_VLANDB_ENTRY_TUNNEL_INFO] = {535 *         [BRIDGE_VLANDB_TINFO_ID]536 *         ...537 *     }538 * }539 */540enum {541	BRIDGE_VLANDB_TINFO_UNSPEC,542	BRIDGE_VLANDB_TINFO_ID,543	BRIDGE_VLANDB_TINFO_CMD,544	__BRIDGE_VLANDB_TINFO_MAX,545};546#define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1)547 548/* [BRIDGE_VLANDB_ENTRY] = {549 *     [BRIDGE_VLANDB_ENTRY_STATS] = {550 *         [BRIDGE_VLANDB_STATS_RX_BYTES]551 *         ...552 *     }553 *     ...554 * }555 */556enum {557	BRIDGE_VLANDB_STATS_UNSPEC,558	BRIDGE_VLANDB_STATS_RX_BYTES,559	BRIDGE_VLANDB_STATS_RX_PACKETS,560	BRIDGE_VLANDB_STATS_TX_BYTES,561	BRIDGE_VLANDB_STATS_TX_PACKETS,562	BRIDGE_VLANDB_STATS_PAD,563	__BRIDGE_VLANDB_STATS_MAX,564};565#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)566 567enum {568	BRIDGE_VLANDB_GOPTS_UNSPEC,569	BRIDGE_VLANDB_GOPTS_ID,570	BRIDGE_VLANDB_GOPTS_RANGE,571	BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING,572	BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION,573	BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION,574	BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT,575	BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT,576	BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL,577	BRIDGE_VLANDB_GOPTS_PAD,578	BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL,579	BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL,580	BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL,581	BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL,582	BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL,583	BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,584	BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,585	BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,586	BRIDGE_VLANDB_GOPTS_MSTI,587	__BRIDGE_VLANDB_GOPTS_MAX588};589#define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)590 591/* Bridge multicast database attributes592 * [MDBA_MDB] = {593 *     [MDBA_MDB_ENTRY] = {594 *         [MDBA_MDB_ENTRY_INFO] {595 *		struct br_mdb_entry596 *		[MDBA_MDB_EATTR attributes]597 *         }598 *     }599 * }600 * [MDBA_ROUTER] = {601 *    [MDBA_ROUTER_PORT] = {602 *        u32 ifindex603 *        [MDBA_ROUTER_PATTR attributes]604 *    }605 * }606 */607enum {608	MDBA_UNSPEC,609	MDBA_MDB,610	MDBA_ROUTER,611	__MDBA_MAX,612};613#define MDBA_MAX (__MDBA_MAX - 1)614 615enum {616	MDBA_MDB_UNSPEC,617	MDBA_MDB_ENTRY,618	__MDBA_MDB_MAX,619};620#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)621 622enum {623	MDBA_MDB_ENTRY_UNSPEC,624	MDBA_MDB_ENTRY_INFO,625	__MDBA_MDB_ENTRY_MAX,626};627#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)628 629/* per mdb entry additional attributes */630enum {631	MDBA_MDB_EATTR_UNSPEC,632	MDBA_MDB_EATTR_TIMER,633	MDBA_MDB_EATTR_SRC_LIST,634	MDBA_MDB_EATTR_GROUP_MODE,635	MDBA_MDB_EATTR_SOURCE,636	MDBA_MDB_EATTR_RTPROT,637	MDBA_MDB_EATTR_DST,638	MDBA_MDB_EATTR_DST_PORT,639	MDBA_MDB_EATTR_VNI,640	MDBA_MDB_EATTR_IFINDEX,641	MDBA_MDB_EATTR_SRC_VNI,642	__MDBA_MDB_EATTR_MAX643};644#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)645 646/* per mdb entry source */647enum {648	MDBA_MDB_SRCLIST_UNSPEC,649	MDBA_MDB_SRCLIST_ENTRY,650	__MDBA_MDB_SRCLIST_MAX651};652#define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1)653 654/* per mdb entry per source attributes655 * these are embedded in MDBA_MDB_SRCLIST_ENTRY656 */657enum {658	MDBA_MDB_SRCATTR_UNSPEC,659	MDBA_MDB_SRCATTR_ADDRESS,660	MDBA_MDB_SRCATTR_TIMER,661	__MDBA_MDB_SRCATTR_MAX662};663#define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1)664 665/* multicast router types */666enum {667	MDB_RTR_TYPE_DISABLED,668	MDB_RTR_TYPE_TEMP_QUERY,669	MDB_RTR_TYPE_PERM,670	MDB_RTR_TYPE_TEMP671};672 673enum {674	MDBA_ROUTER_UNSPEC,675	MDBA_ROUTER_PORT,676	__MDBA_ROUTER_MAX,677};678#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)679 680/* router port attributes */681enum {682	MDBA_ROUTER_PATTR_UNSPEC,683	MDBA_ROUTER_PATTR_TIMER,684	MDBA_ROUTER_PATTR_TYPE,685	MDBA_ROUTER_PATTR_INET_TIMER,686	MDBA_ROUTER_PATTR_INET6_TIMER,687	MDBA_ROUTER_PATTR_VID,688	__MDBA_ROUTER_PATTR_MAX689};690#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)691 692struct br_port_msg {693	__u8  family;694	__u32 ifindex;695};696 697struct br_mdb_entry {698	__u32 ifindex;699#define MDB_TEMPORARY 0700#define MDB_PERMANENT 1701	__u8 state;702#define MDB_FLAGS_OFFLOAD	(1 << 0)703#define MDB_FLAGS_FAST_LEAVE	(1 << 1)704#define MDB_FLAGS_STAR_EXCL	(1 << 2)705#define MDB_FLAGS_BLOCKED	(1 << 3)706	__u8 flags;707	__u16 vid;708	struct {709		union {710			__be32	ip4;711			struct in6_addr ip6;712			unsigned char mac_addr[ETH_ALEN];713		} u;714		__be16		proto;715	} addr;716};717 718enum {719	MDBA_SET_ENTRY_UNSPEC,720	MDBA_SET_ENTRY,721	MDBA_SET_ENTRY_ATTRS,722	__MDBA_SET_ENTRY_MAX,723};724#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)725 726/* [MDBA_GET_ENTRY] = {727 *    struct br_mdb_entry728 *    [MDBA_GET_ENTRY_ATTRS] = {729 *       [MDBE_ATTR_SOURCE]730 *          struct in_addr / struct in6_addr731 *       [MDBE_ATTR_SRC_VNI]732 *          u32733 *    }734 * }735 */736enum {737	MDBA_GET_ENTRY_UNSPEC,738	MDBA_GET_ENTRY,739	MDBA_GET_ENTRY_ATTRS,740	__MDBA_GET_ENTRY_MAX,741};742#define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1)743 744/* [MDBA_SET_ENTRY_ATTRS] = {745 *    [MDBE_ATTR_xxx]746 *    ...747 * }748 */749enum {750	MDBE_ATTR_UNSPEC,751	MDBE_ATTR_SOURCE,752	MDBE_ATTR_SRC_LIST,753	MDBE_ATTR_GROUP_MODE,754	MDBE_ATTR_RTPROT,755	MDBE_ATTR_DST,756	MDBE_ATTR_DST_PORT,757	MDBE_ATTR_VNI,758	MDBE_ATTR_IFINDEX,759	MDBE_ATTR_SRC_VNI,760	MDBE_ATTR_STATE_MASK,761	__MDBE_ATTR_MAX,762};763#define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1)764 765/* per mdb entry source */766enum {767	MDBE_SRC_LIST_UNSPEC,768	MDBE_SRC_LIST_ENTRY,769	__MDBE_SRC_LIST_MAX,770};771#define MDBE_SRC_LIST_MAX (__MDBE_SRC_LIST_MAX - 1)772 773/* per mdb entry per source attributes774 * these are embedded in MDBE_SRC_LIST_ENTRY775 */776enum {777	MDBE_SRCATTR_UNSPEC,778	MDBE_SRCATTR_ADDRESS,779	__MDBE_SRCATTR_MAX,780};781#define MDBE_SRCATTR_MAX (__MDBE_SRCATTR_MAX - 1)782 783/* Embedded inside LINK_XSTATS_TYPE_BRIDGE */784enum {785	BRIDGE_XSTATS_UNSPEC,786	BRIDGE_XSTATS_VLAN,787	BRIDGE_XSTATS_MCAST,788	BRIDGE_XSTATS_PAD,789	BRIDGE_XSTATS_STP,790	__BRIDGE_XSTATS_MAX791};792#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)793 794enum {795	BR_MCAST_DIR_RX,796	BR_MCAST_DIR_TX,797	BR_MCAST_DIR_SIZE798};799 800/* IGMP/MLD statistics */801struct br_mcast_stats {802	__u64 igmp_v1queries[BR_MCAST_DIR_SIZE];803	__u64 igmp_v2queries[BR_MCAST_DIR_SIZE];804	__u64 igmp_v3queries[BR_MCAST_DIR_SIZE];805	__u64 igmp_leaves[BR_MCAST_DIR_SIZE];806	__u64 igmp_v1reports[BR_MCAST_DIR_SIZE];807	__u64 igmp_v2reports[BR_MCAST_DIR_SIZE];808	__u64 igmp_v3reports[BR_MCAST_DIR_SIZE];809	__u64 igmp_parse_errors;810 811	__u64 mld_v1queries[BR_MCAST_DIR_SIZE];812	__u64 mld_v2queries[BR_MCAST_DIR_SIZE];813	__u64 mld_leaves[BR_MCAST_DIR_SIZE];814	__u64 mld_v1reports[BR_MCAST_DIR_SIZE];815	__u64 mld_v2reports[BR_MCAST_DIR_SIZE];816	__u64 mld_parse_errors;817 818	__u64 mcast_bytes[BR_MCAST_DIR_SIZE];819	__u64 mcast_packets[BR_MCAST_DIR_SIZE];820};821 822/* bridge boolean options823 * BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets824 * BR_BOOLOPT_MCAST_VLAN_SNOOPING - control vlan multicast snooping825 *826 * IMPORTANT: if adding a new option do not forget to handle827 *            it in br_boolopt_toggle/get and bridge sysfs828 */829enum br_boolopt_id {830	BR_BOOLOPT_NO_LL_LEARN,831	BR_BOOLOPT_MCAST_VLAN_SNOOPING,832	BR_BOOLOPT_MST_ENABLE,833	BR_BOOLOPT_MAX834};835 836/* struct br_boolopt_multi - change multiple bridge boolean options837 *838 * @optval: new option values (bit per option)839 * @optmask: options to change (bit per option)840 */841struct br_boolopt_multi {842	__u32 optval;843	__u32 optmask;844};845 846enum {847	BRIDGE_QUERIER_UNSPEC,848	BRIDGE_QUERIER_IP_ADDRESS,849	BRIDGE_QUERIER_IP_PORT,850	BRIDGE_QUERIER_IP_OTHER_TIMER,851	BRIDGE_QUERIER_PAD,852	BRIDGE_QUERIER_IPV6_ADDRESS,853	BRIDGE_QUERIER_IPV6_PORT,854	BRIDGE_QUERIER_IPV6_OTHER_TIMER,855	__BRIDGE_QUERIER_MAX856};857#define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1)858#endif /* _UAPI_LINUX_IF_BRIDGE_H */859