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